bash + 여러 조합으로 끝나는 파일이 있는지 확인 [복제]

bash + 여러 조합으로 끝나는 파일이 있는지 확인 [복제]

/tmp/file.1우리는 또는 /tmp/file.43.434/tmp/file-hegfegf을 가질 수 있습니다 .

그렇다면 bash에서 존재를 어떻게 확인합니까 /tmp/file*?

우리는 다음과 같이 노력합니다

[[ -f "/tmp/file*" ]] && echo "file exists" 

하지만 위의 방법은 작동하지 않습니다.

어떻게 고치나요?

답변1

find이 사례를 식별하기 위해 or 루프를 사용하겠습니다 for.

예제 #1 find(GNU 확장을 사용하여 검색 공간 제한):

# First try with no matching files
[ -n "$(find /tmp/file* -maxdepth 1 -type f -print -quit)" ] && echo yes || echo no    # "no"

# Create some matching files and try the same command once more
touch /tmp/file.1 /tmp/file.43.434 /tmp/file-hegfegf
[ -n "$(find /tmp/file* -maxdepth 1 -type f -print -quit)" ] && echo yes || echo no    # "yes"

for루프 가 있는 예제 #2

found=
for file in /tmp/file*
do
    [ -f "$file" ] && found=yes && break
done
[ yes = "$found" ] && echo yes || echo no    # No files "no", otherwise "yes"

관련 정보