我有一个具有动态名称的文件,其版本如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"