我正在尝试'找到'匹配“* .gz”的所有文件,然后解压缩它们,但也排除多个文件名字符串。
我正在使用的当前bash字符串是:
find . -name '*.gz' ! -name *dvportgroups* ! -name *nsanity* ! -name *vcsupport* ! -name *viclient* ! -name vsantraces* -exec gunzip -vf {} \;
不幸的是,虽然这成功地忽略了*dvportgroups*
,但仍然会尝试解压缩我希望避免的其他文件。
这与我跑步时的结果相同:
find . -name '*.gz' ! -name *dvportgroups* -exec gunzip -vf {} \;
我想知道如何'找到'匹配*.gz
但匹配多个文件名字符串的所有文件。
FWIW这是在运行RHEL 6的计算机上的bash 4.2下。
答案 0 :(得分:0)
我会猜测您尝试排除的许多文件在当前目录中都匹配,因此需要引用。
试试这个:
find . -name '*.gz' ! -name '*dvportgroups*' ! -name '*nsanity*' ! -name '*vcsupport*' ! -name '*viclient*' ! -name 'vsantraces*' -exec gunzip -vf {} \;
如果这不起作用,请将-exec ...
替换为-print
,然后更清楚地查看结果。我只是做了一个类似的命令(仅更改模式以匹配我的文件并将-exec ...
更改为-print0
)并且它在我的系统上运行良好。