如何查找给定扩展名的所有文件,不包括多个文件名字符串
how to find all files of a given extension excluding multiple filename strings
我正在尝试 'find' 所有匹配“*.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 {} \;
我想知道如何 'find' 所有匹配 *.gz
的文件但排除多个文件名字符串。
FWIW 这是在 bash 4.2 机器上 运行ning RHEL 6.
我猜测您要排除的许多文件在当前目录中都有匹配项,因此需要引用。
试试这个:
find . -name '*.gz' ! -name '*dvportgroups*' ! -name '*nsanity*' ! -name '*vcsupport*' ! -name '*viclient*' ! -name 'vsantraces*' -exec gunzip -vf {} \;
如果这不起作用,请将 -exec ...
替换为 -print
并更清楚地查看结果。我只是做了一个类似的命令(只更改模式以匹配我的文件并将 -exec ...
更改为 -print0
)并且它在我的系统上运行良好。
我正在尝试 'find' 所有匹配“*.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 {} \;
我想知道如何 'find' 所有匹配 *.gz
的文件但排除多个文件名字符串。
FWIW 这是在 bash 4.2 机器上 运行ning RHEL 6.
我猜测您要排除的许多文件在当前目录中都有匹配项,因此需要引用。
试试这个:
find . -name '*.gz' ! -name '*dvportgroups*' ! -name '*nsanity*' ! -name '*vcsupport*' ! -name '*viclient*' ! -name 'vsantraces*' -exec gunzip -vf {} \;
如果这不起作用,请将 -exec ...
替换为 -print
并更清楚地查看结果。我只是做了一个类似的命令(只更改模式以匹配我的文件并将 -exec ...
更改为 -print0
)并且它在我的系统上运行良好。