리눅스에서 특정 파일이 있는지 존재 여부를 확인하는 방법에 대하여 알아봅니다.

리눅스에서 어떤 파일이 있는지 확인 후에 작업을 진행하려고 합니다. 아니면 그 반대로 파일이 없는 경우에만 특정 명령을 내릴 수도 있겠죠. 어떻게 하면 가능할까요?



# 리눅스 파일 존재 여부 확인하는 방법, test
이 경우 test 명령어를 사용할 수 있습니다 test는 파일 및 디렉토리에 사용하여 여부를 확인하고 true / false로 결과를 리턴 받을 수 있죠.

만약 어떤 파일이 존재하는 경우 "File Exist!!"라는 문구를 출력해보려면 어떻게 할까요? test 명령어와 if문을 함께 사용하여 코드를 작성해보겠습니다.

@ 파일이름 : './test_file.sh'
if test -f './test_file.sh'; then
  echo "File Exist !!!";
fi

// test 명령어 대신에 [] 또는 [[]] 기호를 사용할 수 있음
if [ -f ./test_file.sh ]; then
  echo "File Exist !!!";
fi

만약 해당 경로에 파일이 존재하는 경우에는 당연히 "File Exist!!!"라는 문구가 출력될 것입니다. 아래의 방법 역시 동일하며 test 명령어 대신 [] 기호를 사용했습니다. 대신 [] 내부의 따옴표는 제거하였습니다.


! 반대로 파일이 없는 경우 실행하기
이번에는 위 예제와 반대로 파일이 없는 경우에만 실행하는 방법을 알아보려고 합니다. 다른 언어의 분기문처럼 !기호를 앞에 추가하면 반대의 결과를 반환합니다.
if [ ! -f ./test_file.sh ]; then
  echo "Not Exists";
fi

이번에는 파일이 없는 경우에만 "Not Exists"라는 문구를 출력합니다.


! 리눅스 디렉토리의 존재 여부 확인 방법
파일과 마찬가지로 test를 사용하여 디렉토리 역시 존재 여부를 확인할 수 있습니다. -f는 파일인 경우에 사용하며 -d를 사용하면 디렉토리 여부를 확인하게 됩니다. 먼저 test에 사용 가능한 옵션입니다.

  • -f // 파일 여부 확인
  • -d // 디렉토리 여부 확인
  • -x // 파일 존재 여부 및 실행 가능 여부를 함께 확인

위와 같이 -d 옵션을 사용해 존재 여부를 확인해볼 수 있죠. 아래의 코드를 봐주세요.
if [ -d ./abc ]; then
  echo "Directory Found !!!";
fi

보시면 -f를 -d로 바꾸었죠. 그리고 내부에 ./abc 폴더가 있는지 확인 후 있는 경우 "Directory Found"라고 출력하게 되는 간단한 코드입니다.


여기까지 리눅스에서 파일을 찾는 간단한 방법을 알아봤습니다.