Linux

如何根據文件部分名稱檢查文件是否存在

  • January 17, 2018

眾所周知,檢查文件的方法是這樣的

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

但是如何檢查文件是否存在以防文件包含名稱為 - “ create_DB_files

我試試這個(但不起作用)

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

也就是說,匹配相關名稱並檢查它們是否是正常文件(一旦找到,循環將立即退出)。

這將根據部分名稱測試文件是否存在,並具有查找文件的所有靈活性,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

引用自:https://unix.stackexchange.com/questions/417691