이번 포스팅에서는 리눅스에서 쉘 스크립트(Shell Script)를 작성할 때, 

파일 존재 여부를 확인하는 방법에 대해 알아보자!

 

1. 파일이 존재하는 경우

아래 스크립트처럼 if 문 안에 '-e' 라는 옵션을 넣어서 '해당 파일이 존재한다면~' 을 표현한다!

#! /bin/bash

FILE = "/home/junho/test.txt"

if [ -e $FILE ]; then
	echo "File Exists."
fi

 

2. 파일이 존재하지 않는 경우

파일이 존재하지 않는 경우는 간단하게 if 문에서 부정을 뜻하는 '!' 를 넣으면 된다!

이렇게 하면 '해당 파일이 존재하지 않는다면~' 을 의미한다.

이때 쉘 스크립트에서 if 문을 작성할 때의 원칙인, 괄호 옆에 한 칸을 띄우는 것을 if 부정문을 사용할 때에도 똑같이 적용된다는 것을 잊지 말자!

#! /bin/bash

FILE = "/home/junho/test.txt"

if [ ! -e $FILE ]; then
	echo "File Doesn't Exists."
fi

'-e' 외에도, 아래의 다양한 파일 비교 operator 들을 참고하자!

Operator Discription (아래 설명과 일치하면 참)
-e 해당 파일이 존재한다.
-f 해당 파일이 존재하고 일반 파일이다.(디렉토리 X, 장치파일 X)
-s 해당 파일이 존재하고, 파일 크기가 0보다 크다.
-d 해당 파일이 존재하고, 디렉토리이다.
-b 해당 파일이 존재하고, 블록장치 파일이다.
-c 해당 파일이 존재하고, 캐릭터 장치 파일이다.
-p 해당 파일이 존재하고, FIFO(Named Pipe) 이다.
-h / -L 해당 파일이 존재하고, 한 개 이상의 심볼릭 링크가 설정되어 있다.
-S 해당 파일이 존재하고, 소켓 디바이스이다.
-t 해당 파일이 존재하고, 디스크립터가 터미널 디바이스와 연관되어 있다.
-r 해당 파일이 존재하고, 읽기가 가능하다.
-w 해당 파일이 존재하고, 쓰기가 가능하다.
-x 해당 파일이 존재하고, 실행이 가능하다.
-g 해당 파일이 존재하고, SetGID가 설정되어 있다. (파일 그룹 실행권한에 s가 있다.)
-u 해당 파일이 존재하고, SetUID가 설정되어 있다.
-k 해당 파일이 존재하고, Sticky Bit가 설정되어 있다.
-O 해당 파일의 소유자가 현재 사용자이다.
-G 해당 파일의 그룹이 현재 사용자 그룹이다.
filename1 -nt filename2 filename1 이 filename2 보다 새로운 파일이다. (Newer Than)
filename1 -ot filename2 filename1 이 filename2 보다 오래된 파일이다. (Older Than)
filename1 -ef filename2 filename1 과 filename2 가 같은 파일이다.

 


참고

https://ponyozzang.tistory.com/645

 

쉘 스크립트 파일 존재 체크 방법

쉘 스크립트를 사용해 파일이 존재하는지 체크하는 방법을 알아보겠습니다. 파일 존재 체크는 if 문과 -e 연산자를 사용해 체크를 할 수 있습니다. 파일이 존재하는 경우 처리를 샘프를 먼저 보

ponyozzang.tistory.com

https://blog.gaerae.com/2015/01/bash-hello-world.html

 

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

 

blog.gaerae.com

https://eotrade.tistory.com/1121

 

쉘 스크립트 if문 및 쉘에서 인자 처리

쉘 스크립트 if문 및 쉘에서 인자 처리 (1) if 문     if [ 조건식 ] ; then        실행문     fi (2) if else 문     if [ 조건식 ] ; then        실행문     else        실행..

eotrade.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기