用exec查找表达式

时间:2013-11-28 12:34:32

标签: bash find

我在查找时遇到了一些麻烦。这没有达到我的预期:

find . -iname "*.hh" -or -iname "*.h" -exec grep -inH "IDENTIFIER" {} \;

我希望它在* .hh和* .h文件中都是grep,但它只会影响-iname“* .h”的结果。我使用xargs来解决它。

find . -iname "*.hh" -or -iname "*.h" | xargs grep -inH "IDENTIFIER"

但有没有办法使用-exec而不用这样写两次:

find . -iname "*.hh" -exec grep -inH "IDENTIFIER" {} \; -or -iname "*.h" -exec grep -inH "IDENTIFIER" {} \;

2 个答案:

答案 0 :(得分:3)

你可以说:

find . \( -iname "*.hh" -o -iname "*.h" \) -exec ...

找到* .hh和* .h文件。

答案 1 :(得分:1)

您也可以使用grep的正则表达式选项:

find . -regex '.*\.hh?' -exec grep -inH "IDENTIFIER" {} \;