【问题标题】:Grepping from a text file list从文本文件列表中提取
【发布时间】:2013-02-01 21:59:34
【问题描述】:

我知道我可以找到特定类型的文件,然后一口气将它们 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 是什么样的?我尝试了几种组合,但都无法正确。

【问题讨论】:

    标签: shell grep


    【解决方案1】:

    xargs grep "your pattern" < my-file-list.txt

    【讨论】:

    • 那是一个疯狂的快速响应,并且像一个魅力。我希望我可以多次投票,我什至用谷歌搜索它会花费我更长的时间:)
    • 您可以选择它作为最佳答案。 :-)
    • 如果文件列表中包含他的名字中的空格,它不会起作用:(
    • 如果您可以控制文件的来源,您可以使用-print0(对于find)和-0 选项对于xargs
    • -d"\n" 代表xargs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多