2013-10-16 118 views
133

你如何grep並且只返回匹配的行?即結果中省略了路徑/文件名。grep沒有顯示路徑/文件:行

在這種情況下,我想在所有的.bar文件,以尋找當前目錄下,搜索術語FOO

find . -name '*.bar' -exec grep -Hn FOO {} \; 

回答

214

無需find。如果你只是尋找一個特定目錄中的模式,這應該足夠了:

grep -hn FOO /your/path/*.bar 

哪裏-h是隱藏文件名參數,從man grep

-h, - no-filename

抑制輸出文件名的前綴。當只有一個文件(或只有標準輸入)要搜索時,這是默認的 。您使用我們

-H,--with文件名

打印每個匹配的文件名

注意。當有多個文件要搜索時,這是默認值。

5

不是真的那麼難手冊頁一看,是什麼呢?

-h, --no-filename 
    Suppress the prefixing of file names on output. This is the default when there 
    is only one file (or only standard input) to search. 
+23

感謝您的回答,但更容易檢查的StackOverflow :) – chessofnerd

+3

奇蹟爲什麼谷歌沒有特殊情況,聯機手冊像是特例一切。 – Gordon

+13

@ TC1手冊頁通常由交換機而不是任務組織。通讀每一個可能的轉換是令人厭煩的。 – mikemaccana

6

只需將-H替換爲-h即可。檢查man grep更多細節上的選項

find . -name '*.bar' -exec grep -hn FOO {} \; 
相關問題