2013-11-28 53 views
0

我在查找時遇到了一些麻煩。這並沒有做什麼,我預計:用exec找到表達式

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

我預期在這兩個* .hh和* .h文件的grep,但它只裏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" {} \; 

回答

3

你可以說:

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

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

1

你也可以做它用正則表達式選項給grep:

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