Linux
如何根據文件部分名稱檢查文件是否存在
眾所周知,檢查文件的方法是這樣的
[[ -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