"find"具体内容[linux]

"find" specific contents [linux]

我想遍历当前目录(或子目录)中的所有文件,只有当它们包含某些单词时才回显文件名。

更多详情:

find -type f -name "*hello *" 会给我所有名称中包含 "hello" 的文件名。但不是那样,我想搜索文件,如果该文件的内容包含 "hello" 然后打印出文件的名称。

有办法解决这个问题吗?

您可以使用 GNU find 和 GNU grep 作为

find /path -type f -exec grep -Hi 'hello' {} +

这是有效的方式,因为它不会对从 find 编辑的 return 调用尽可能多的 grep 实例。这在一个基本假设下起作用,即 find return 是一组供 grep 搜索的文件。如果您不确定文件是否可用,作为一种简单的方法,您可以使用 xargs-r 标志,在这种情况下,仅当以下情况时才执行 xargs 之后的命令管道命令 return 任何结果

find /path -type f | xargs -r0 grep -Hi 'hello'