"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'
我想遍历当前目录(或子目录)中的所有文件,只有当它们包含某些单词时才回显文件名。
更多详情:
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'