我想從子目錄中的某個文件中查找字符串。 像 我們在捆綁/。 和束/有多個子目錄和多個txt文件 我要像做從文件中找到字符串
find . -type f -exec grep "\<F8\>" {} \;
想要得到它包含字符串< F8>
這個命令不工作,找到該文件字符串,但永遠不會返回文件名 我希望任何人都可以給我一個更好的解決方案,如顯示文件名以及包含該字符串的行
我想從子目錄中的某個文件中查找字符串。 像 我們在捆綁/。 和束/有多個子目錄和多個txt文件 我要像做從文件中找到字符串
find . -type f -exec grep "\<F8\>" {} \;
想要得到它包含字符串< F8>
這個命令不工作,找到該文件字符串,但永遠不會返回文件名 我希望任何人都可以給我一個更好的解決方案,如顯示文件名以及包含該字符串的行
您可以單獨使用grep
。
grep -r '<F8>' .
這應該列出所有匹配的文件和行號:
grep -nR '<F8>' *
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的輸出中轉義。
就我個人而言,我發現只需使用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>
'-H'會有所幫助。 –