我在包含许多文件和子文件夹的文件夹中寻找单词“image”的出现。
常规 grep 命令(grep 和 'git grep')返回超过一千个匹配项。我该如何在 grep 命令中添加一些内容,告诉它,
“找到包含‘单词’的文件,但前提是同一文件中提到了‘记者’或‘出版商’这两个词
答案1
以下应该有效:
grep word `grep -E -l 'reporter|publisher'`
反引号中的命令grep
将生成包含“reporter”或“publisher”的文件列表(-l
告诉 grep 列出匹配的文件而不是提供通常的输出,-E
以确保交替|
有效),然后将其列为外部grep
命令的参数,外部命令依次搜索“word”(-l
如果您只想要匹配的文件列表,也可以添加到其中)。请注意,这不如将其写成单个正则表达式那么有效(它搜索的次数比绝对必要的次数要多),但通常比将其作为单个正则表达式更容易解释。
答案2
首先,建立一个文件列表reporter|publisher
,然后使用该列表作为要搜索的文件的来源word
。
如果你使用确认, 你可以这样做:
ack -l 'reporter|publisher' | ack -x word
其中-x
告诉第二次 ack 调用使用 stdin 上的文件列表作为要搜索的文件列表。