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

时间:2014-08-05 10:01:44

标签: regex linux bash grep 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]正则表达式应该是什么?

2 个答案:

答案 0 :(得分:9)

您可以使用:

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

答案 1 :(得分:1)

来自grep:

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