如何根据文件部分名称检查文件是否存在

如何根据文件部分名称检查文件是否存在

众所周知,检查文件的方法是这样的

[[ -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

相关内容