2013-01-13 49 views
1

我試圖做一個目錄中遞歸搜索,尋找其中發生在我的代碼文件中的字符下面的一系列實例:遞歸的grep搜索文件中的特殊本地字符(C++運算符)

- =

我在命令行使用以下命令:

grep -rn -= --include=*.hpp . 

我收到以下錯誤信息:

grep: invalid option -- '=' 
Usage: grep [OPTION]... PATTERN [FILE]... 
Try `grep --help' for more information. 

不幸的是,幫助不能解決我的問題(或者至少,我看不出如何解決我的問題)。

回答

2

嘗試:

grep -rn --include=*.hpp -- -= . 

的問題是,-=被解釋爲命令行選項。使用--來表示命令行選項的結束,所以-=被解釋爲模式。

+0

是的,它的工作原理。我會盡快接受你的回答(約5分鐘) –

+0

謝謝!另外請注意,doomster是正確的,如果在你運行這個目錄的目錄中有任何'.hpp'文件,那麼你可能會想''''以避免shell在grep看到它之前將它匹配。例如。 '--include ='*。hpp''。 –

+0

傳統的解決方案是'grep -rne - = --include = *。hpp。' - '-e'選項允許您傳入以破折號開頭的正則表達式。 – tripleee

1

grep -r -- -= .也許? --將選項(以 - 開頭)與命令行的其餘部分分開。 BTW:您可能需要隱藏你的shell星號,即使用--include=\*.hpp