2012-06-08 94 views
0

我想從子目錄中的某個文件中查找字符串。 像 我們在捆綁/。 和束/有多個子目錄和多個txt文件 我要像做從文件中找到字符串

find . -type f -exec grep "\<F8\>" {} \; 

想要得到它包含字符串< F8>

這個命令不工作,找到該文件字符串,但永遠不會返回文件名 我希望任何人都可以給我一個更好的解決方案,如顯示文件名以及包含該字符串的行

+0

'-H'會有所幫助。 –

回答

1

您可以單獨使用grep

grep -r '<F8>' . 
0

這應該列出所有匹配的文件和行號:

grep -nR '<F8>' * 
2
grep -rl '<F8>' . 

-r選項告訴grep來,通過目錄遞歸搜索開始.

-l選項告訴它只顯示匹配的文件名,而不是行本身。

輸出將是這個樣子:

./thisfile 
./foo/bar/thatfile 

如果要將此限制爲只有一個文件,追加| head -1到行的末尾。

如果你想要像輸出:

./thisfile:My text contains the <F8> string 
./foo/bar/thatfile:didn't remember to press the <F8> key on the 

那麼你可以只留下斷-l選項。請注意,此輸出不安全,因爲文件名可能包含冒號,並且文件名中的冒號不會在grep的輸出中轉義。

0

就我個人而言,我發現只需使用ack即可。 (ack-grep是Ubuntu回購中使用的名稱,以免它與另一個具有相同名稱的軟件混淆)。它在大多數主要存儲庫中都可用。

該命令將是ack -a "<F8>"(或Ubuntu中的ack-grep -a "<F8>")。 -a選項用於搜索所有文件類型。

實施例:

testfile的

Line 1 
Line 2 
Line 3 
<F8> 
<F9> 
<F10> 
Line 4 
Line 5 
Line 6 

輸出:

$ ack -a "<F8>" 
testfile 
4:<F8>