Shell 从文本文件列表进行Grepping

Shell 从文本文件列表进行Grepping,shell,grep,Shell,Grep,我知道我可以找到特定类型的文件,然后一次性grep它们,即 find . -type f -name "*.log" -exec grep -o "some-pattern" {} \; 但我需要分两步来做。这是因为查找操作成本很高(有很多文件和子目录需要搜索)。我想把文件列表保存到一个文本文件中,然后在需要的时候重复grep这个预计算文件集上的不同模式。第一部分很简单: find . -type f -name "*.log" > my-file-list.txt 现在,我有一个如下

我知道我可以找到特定类型的文件,然后一次性grep它们,即

find . -type f -name "*.log" -exec grep -o "some-pattern" {} \;
但我需要分两步来做。这是因为查找操作成本很高(有很多文件和子目录需要搜索)。我想把文件列表保存到一个文本文件中,然后在需要的时候重复grep这个预计算文件集上的不同模式。第一部分很简单:

find . -type f -name "*.log" > my-file-list.txt
现在,我有一个如下所示的文件:

./logs/log1.log
./logs/log2.log
etc

grep看起来像什么?我尝试了几种组合,但都做不好。

xargs grep“您的模式”

这是一种非常快速的响应,效果非常好。我希望我能多次投票,我甚至需要更长的时间来搜索:)你可以选择它作为最佳答案。:-)如果文件列表中的名称中包含空格,那么它将不起作用:(如果您可以控制文件的源,您可以使用
-print0
(对于
查找
)和
-0
选项
xargs
。或者
-d”\n
对于
xargs