Linux
如何在linux中的目錄的全部內容中搜尋單詞
需要在整個內容中搜尋某些東西
我在嘗試:
find . | xargs grep word
我得到錯誤:
xargs:未終止的報價
如何做到這一點?
xargs
期望以沒有其他命令產生的格式輸入,因此很難有效使用。這裡的問題是您有一個文件,其名稱必須在輸入時被引用xargs
(可能包含 a'
)。如果您的 grep 支持遞歸搜尋的
-r
or選項,請使用它。-R
grep -r word .
否則,
-exec
使用find
. 這是實現與 相同效果的常用方法xargs
,除了對文件名沒有限制。合理的最新版本find
允許您在對輔助命令的一次呼叫中對多個文件進行分組。傳遞/dev/null
給grep
確保它將在每個匹配項之前顯示文件名,即使它恰好在單個文件上呼叫。find . -type f -exec grep word /dev/null {} +
舊版本的
find
(在舊系統或 OpenBSD 上,或簡化的實用程序,如 BusyBox)一次只能在一個文件上呼叫輔助命令。find . -type f -exec grep word /dev/null {} \;
某些版本的
find
和xargs
具有允許它們正確通信的副檔名,使用空字元分隔文件名,因此不需要引用。這些天來,只有 OpenBSD 有這個功能,而沒有-exec … {} +
.find . -type f -print0 | xargs -0 grep word /dev/null