我想获取当前目录中的失败日志列表,以便在外部脚本中使用,这些日志是通过文件名中的模式 FAIL 确定的,因此我一直在使用 FAIL* 来提供要打开的脚本文件和过程。但是,每个 FAIL 文件都有两种类型:压缩文件和未压缩文件。我只想打开未压缩的文件。
是否可以链接 find FAIL* 但如果 *.gz/bz2/whatever 存在则不能链接?
答案1
您可以测试这些扩展是否存在正则表达式:
for file in *FAIL*; do [[ ! $file =~ .(bz2|gz) ]] && printf "%s\n" "$file"; done
插入强制性警告不解析ls
...
答案2
如果您使用该find
命令,您可以省略以扩展名结尾的文件,.gz
如下所示:
$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL.gz
$ find . -name "*FAIL*" ! -name "*.gz"
./FAIL
您还可以ls
像这样过滤输出:
$ ls *FAIL* | grep -v '.gz'
FAIL
但通常建议不要解析ls
输出,因为它的结构不利于解析输出。