如何使用 ack(最好是 ack)或 grep 在文件列表中搜索字符串?

chi*_*him 3 grep find ack

我想在任何名为 search-this-one.html 的文件中搜索字符串“my-search-string”

在我当前工作目录的所有子目录中。

我想要包含此字符串的文件的完整路径列表。有数百个名为 search-this-one.html 的文件,其中任意数量的文件都可以包含该字符串。

有没有人有任何成功做到这一点。

我可以得到这样的文件列表..

find . -type f -name "search-this-one.html"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种 grep 和 ack 开关,所有其他相关答案仅搜索与搜索字符串匹配的文件名。

And*_*ter 6

如果您正在运行 ack 2.x,您可以使用 -x 选项从 STDIN 获取输入,就像 xargs 一样。

ack -g search-this-one.html | ack -x pattern
Run Code Online (Sandbox Code Playgroud)

ack -g表示“找到的名称相匹配的任何文本文件search-this-one.html”,然后说的管道输送到ack -x这需要从它的STDIN输入文件的列表。

也适用于使用正则表达式搜索文件名:

ack -g '\.*.conf$' | ack -x searchString
Run Code Online (Sandbox Code Playgroud)