Grep

如何將文件列表傳遞給 grep

  • September 21, 2020

我正在使用find並獲取我想要grep通過的文件列表。我如何將該列表傳輸到grep

好吧,適用於任何寫入 stdout 的命令的通用情況是使用xargs,它允許您將任意數量的命令行參數附加到命令的末尾:

$ find … | xargs grep 'search'

grep或者用反引號或將命令嵌入到您的行中$(),這將執行命令並替換其輸出:

$ grep 'search' $(find …)

\'"請注意,如果文件名包含空格或某些其他“奇怪的字元”(對於 xargs,\[*?for $(find …)),這些命令將不起作用。


但是,在特定情況下,find在給定參數上執行程序的能力是內置的:

$ find … -exec grep 'search' {} \;

-exec和之間的一切都是;要執行的命令;{}替換為找到的文件名findgrep這將為每個文件執行單獨的;由於grep可以獲取許多文件名並全部搜尋,因此您可以更改;to+以告訴 find 一次將所有匹配的文件名傳遞給grep

$ find … -exec grep 'search' {} \+

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