grep 在目录中查找保存在文件中的一组搜索模式
grep in a directory for the set of search patterns saved in a file
我想 grep 多个搜索模式。我不能将 grep -E
或 egrep
与 '|'
分隔的搜索模式一起使用,因为它们数量庞大。
我已将这些模式存储在一个文件中。
运行 如何在目录上进行 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/*
我想 grep 多个搜索模式。我不能将 grep -E
或 egrep
与 '|'
分隔的搜索模式一起使用,因为它们数量庞大。
我已将这些模式存储在一个文件中。
运行 如何在目录上进行 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/*