Shell script에서 어떤 경로의 파일이 존재하는지 확인하는 방법에 대해서 알아보겠습니다.

이 글의 예제들은 Ubuntu 20.04에서 Bash shell을 사용하여 작성되었습니다.

1. 파일 또는 디렉토리 존재 확인

아래와 같은 코드로 디렉토리 또는 파일이 존재하는지 확인할 수 있습니다.

  • -e는 디렉토리/파일이 존재하는지 확인하는데 사용됨, 파일이 존재하면 true
  • -a도 디렉토리/파일 존재 유무를 확인하는데 사용되지만, 현재 deprecated 되었음
#!/bin/bash

filename="example.txt"

if [ -e "$filename" ]; then
    echo "파일이 존재합니다."
else
    echo "파일이 존재하지 않습니다."
fi

Output:

$ bash example.sh
파일이 존재합니다.

2. 디렉토리가 아닌 파일 존재 유무 확인

-e는 파일이 아닌 디렉토리에 대해서도 존재 유무를 체크할 수 있습니다.

예를 들어, myfolder는 디렉토리인데, 아래와 같이 -e로 체크하면 파일이 존재한다고 인식합니다.

#!/bin/bash

filename="myfolder"

if [ -e "$filename" ]; then
    echo "파일이 존재합니다."
else
    echo "파일이 존재하지 않습니다."
fi

Output:

$ bash example.sh
파일이 존재합니다.

아래와 같이 체크하고 싶을 수 있습니다. 이럴 때는 -f 연산자로 체크하면 됩니다.

  • 해당 패스가 디렉토리인 경우, false
  • 해당 패스가 파일이고 존재하는 경우 true
  • 해당 패스가 파일이고 존재하지 않는 경우 false
#!/bin/bash

filename="myfolder"

if [ -f "$filename" ]; then
    echo "파일이 존재합니다."
else
    echo "파일이 존재하지 않습니다."
fi

Output:

$ bash example.sh
파일이 존재하지 않습니다.

3. 파일이 아닌 디렉토리 존재 유무 확인

파일이 디렉토리인 경우만을 대상으로, 존재 유무를 확인하고 싶을 때는 -d 연산자를 사용하여 체크하면 됩니다.

  • 파일인 경우 false
  • 디렉토리이고, 존재하지 않는 경우 false
  • 디렉토리이고, 존재하는 경우 true
#!/bin/bash

filename="myfolder"

if [ -d "$filename" ]; then
    echo "파일이 존재합니다."
else
    echo "파일이 존재하지 않습니다."
fi

Output:

$ bash example.sh
파일이 존재합니다.