Grep
如何將文件列表傳遞給 grep
我正在使用
find
並獲取我想要grep
通過的文件列表。我如何將該列表傳輸到grep
?
好吧,適用於任何寫入 stdout 的命令的通用情況是使用
xargs
,它允許您將任意數量的命令行參數附加到命令的末尾:$ find … | xargs grep 'search'
grep
或者用反引號或將命令嵌入到您的行中$()
,這將執行命令並替換其輸出:$ grep 'search' $(find …)
\'"
請注意,如果文件名包含空格或某些其他“奇怪的字元”(對於 xargs,\[*?
for$(find …)
),這些命令將不起作用。但是,在特定情況下,
find
在給定參數上執行程序的能力是內置的:$ find … -exec grep 'search' {} \;
-exec
和之間的一切都是;
要執行的命令;{}
替換為找到的文件名find
。grep
這將為每個文件執行單獨的;由於grep
可以獲取許多文件名並全部搜尋,因此您可以更改;
to+
以告訴 find 一次將所有匹配的文件名傳遞給grep
:$ find … -exec grep 'search' {} \+