【问题标题】:grep in a directory for the set of search patterns saved in a filegrep 在目录中查找保存在文件中的一组搜索模式
【发布时间】:2021-08-07 10:57:52
【问题描述】:

我想用 grep 搜索多种搜索模式。我不能将grep -Eegrep'|' 分隔的搜索模式一起使用,因为它们的数量很大。 我已将这些模式存储在一个文件中。 如何在目录上运行 grep 以提供内容与搜索模式匹配的文件列表

详细场景:

我有 2 个目录

A1 - 100 个文件

B1 - 100 个文件,每个文件只有一行 ->A1 中存在文件名。

给定来自 A1 的 10 个随机文件,我想知道哪些 B1 文件具有这些名称。 我可以在 B1 目录中运行 grep -E "A1file1|A1file2|A1file3...and so on |A1file10" *,它会给我这 10 个文件的列表。但是当文件数量增加时,比如说 100 或 1000,那么编写命令是不可行的。所以我已经将搜索模式(即要在 B1 中搜索的文件名)存储在一个文件中。 如何使用保存在文件中的搜索模式在 B1 中进行 grep?

【问题讨论】:

标签: shell grep ksh


【解决方案1】:

使用支持 nextfile 的 awk,例如GNU awk,并假设 searchpattern 只是一个由换行符分隔的文件名的文件,并且 B1 包含的文件数量不超过 shell 命令参数列表:

awk '
    NR==FNR { names[$0]; next }
    FILENAME in names { print FILENAME }
    { nextfile }
' searchpattern B1/*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2019-01-10
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多