【问题标题】:How can I use a file with a list of paths to multiple files as my grep's input file to search in?如何使用包含多个文件的路径列表的文件作为 grep 的输入文件进行搜索?
【发布时间】:2021-12-31 06:10:51
【问题描述】:

我有一个名为 file.txt 的文件,每行包含数百个文件路径。

文件.txt:

dir1/a.txt
dir2/b.txt
and so on

我正在尝试将此文件用作我的 grep 命令的输入:

less file.txt | xargs -I{} grep -E -A5 'search|pattern' {} 

但它说文件名太长,并且似乎认为“a|b|c”是基于错误的文件名的一部分,但我无法判断我在当前代码中做错了什么.

我的搜索模式也很长,因为我需要从 file.txt 中列出的那些特定文件中找到很多东西。

感谢您的帮助。

【问题讨论】:

  • 不要使用less。使用< file.txt xargs -I{} grep -E -A5 'pattern1|pattern2' {}
  • 我复制了这一行,但它似乎仍然认为搜索模式(即 'pattern1|pattern2')是文件,而不是读取 file.txt 中的路径。我也尝试切换搜索模式和 {} ,但它说 {} 不是目录

标签: shell unix grep xargs


【解决方案1】:
  • 使用 cat 获取文件的字符串 & for 循环遍历它们:
[root@stack]#cat files
dir1/file1
dir2/file2
dir3/file3

[root@stack]#for file in $(cat files); do grep 'foo' $file; done
foo
foo
foo

【讨论】:

    猜你喜欢
    • 2010-11-17
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多