grep 在目录中查找保存在文件中的一组搜索模式

grep in a directory for the set of search patterns saved in a file

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

详细场景:

我有 2 个目录

A1 - 100 个文件

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

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

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

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