Linux

如何在linux中的目錄的全部內容中搜尋單詞

  • August 10, 2017

需要在整個內容中搜尋某些東西

我在嘗試:

find . | xargs grep word

我得到錯誤:

xargs:未終止的報價

如何做到這一點?

xargs期望以沒有其他命令產生的格式輸入,因此很難有效使用。這裡的問題是您有一個文件,其名稱必須在輸入時被引用xargs(可能包含 a ')。

如果您的 grep 支持遞歸搜尋的-ror選項,請使用它。-R

grep -r word .

否則,-exec使用find. 這是實現與 相同效果的常用方法xargs,除了對文件名沒有限制。合理的最新版本find允許您在對輔助命令的一次呼叫中對多個文件進行分組。傳遞/dev/nullgrep確保它將在每個匹配項之前顯示文件名,即使它恰好在單個文件上呼叫。

find . -type f -exec grep word /dev/null {} +

舊版本的find(在舊系統或 OpenBSD 上,或簡化的實用程序,如 BusyBox)一次只能在一個文件上呼叫輔助命令。

find . -type f -exec grep word /dev/null {} \;

某些版本的findxargs具有允許它們正確通信的副檔名,使用空字元分隔文件名,因此不需要引用。這些天來,只有 OpenBSD 有這個功能,而沒有-exec … {} +.

find . -type f -print0 | xargs -0 grep word /dev/null

引用自:https://unix.stackexchange.com/questions/21169