正则expression式egrep发现.gz但不是.tar.gz

我需要在目录中find所有.gz文件,但不是 .tar.gz文件,然后将所有.gz文件发送到some_other_command进行处理。

我可以得到这么远:

find . -regextype egrep -regex '.*/*\.gz$|[NOT .tar.gz]' -exec some_other_command -- '{}' '+'

some_other_command只需要.gz文件而不是 .tar.gz 。 我的[NOT .tar.gz]是否应该是正则expression式的一部分?

你可以使用这个:

 find . -name "*.gz" ! -name "*.tar.gz" -exec some_other_command -- '{}' '+' ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ I want I do not want 

从grep向后看:

 find . | grep -P '(?<!\.tar)\.gz' | xargs some_other_command