检查文件是否存在动态名称

检查文件是否存在动态名称

我有一个具有动态名称的文件,其版本如Abc.1.0.zip, Abc.2.0.zip。我想检查文件是否存在,无论版本如何。我试过

find -name "Abc(.*).zip"

但这没有考虑正则表达式。另外find,我需要获取结果并检查计数是否大于 1,然后可以在条件中使用该变量。

shell脚本中是否有任何简单的方法可以像这样在单行中返回布尔值fileExists Abc.1.0.zip

答案1

要使 find(GNU) 使用正则表达式,您应该使用-regex如下选项:

find . -regex ".*Abc.[0-9]+.[0-9]+.zip"

另外,您可以使用-regextype选项来提及不同的正则表达式类型-regex

有效类型是'findutils-default'、'awk'、'egrep'、'ed'、'emacs'、'gnu-awk'、'grep'、'posix-awk'、'posix-basic'、'posix-egrep'、 'posix-extend'、'posix-minimal-basic'、'sed'。

使用find,您可以对使用选项找到的每个文件执行命令-exec。因此,如果找到该文件,那么它将执行您提供的命令。

前任:

$ find . -regex ".*Abc.[0-9]+.[0-9]+.zip" -exec file {} \;
./Abc.1.0.zip: Zip archive data, at least v2.0 to extract
./Abc.2.0.zip: Zip archive data, at least v2.0 to extract

要测试文件是否存在于 shell 中,您可以使用如下命令:

[[ -f "Abc.1.0.zip" ]] && echo "File exists" || echo "File Not Exists"

相关内容