부분 이름을 기반으로 파일이 존재하는지 확인하는 방법 [중복]

부분 이름을 기반으로 파일이 존재하는지 확인하는 방법 [중복]

다들 아시다시피 파일을 확인하는 방법은 이렇습니다.

[[ -f  /var/scripts_home/orig_create_DB_files_1.46.38 ]] && echo file exist

그러나 파일에 이름 - "이 포함되어 있으면 파일이 존재하는지 확인하는 방법데이터베이스 파일 생성"

나는 이것을 시도하지만 작동하지 않습니다

[[ -f  /var/scripts_home/*create_DB_files* ]] && echo file exist

또는

   partial_file_name=create_DB_files

   [[ -f  /var/scripts_home/*$partial_file_name* ]] && echo file exist

답변1

for name in *create_DB_files*; do
    if [ -f "$name" ]; then
        printf 'at least one file exists (%s)\n' "$name"
        break
    fi
done

즉, 관련 이름을 일치시키고 그 중 하나가 일반 파일인지 확인합니다(찾자마자 루프를 종료합니다).

답변2

이는 파일을 찾을 수 있는 모든 유연성을 사용하여 이름의 일부를 기반으로 파일이 존재하는지 여부를 테스트합니다 find.

find . -name '*create_DB_files*' -printf 1 -quit | grep -q 1

-type f일반 파일에 제한 일치를 추가하는 것을 고려 하거나, -mtime파일 날짜를 일치시키거나, -maxdepth 1검색을 현재 디렉터리로 제한하려는 경우 등을 고려할 수 있습니다.

if위의 내용은 다음과 같은 명령 으로 결합될 수 있습니다 .

if find . -name '*create_DB_files*' -printf 1 -quit | grep -q 1
then
    echo found
else
    echo Not found
fi

관련 정보