打印与模式匹配的文件的文件名和行号

打印与模式匹配的文件的文件名和行号

我需要在当前目录及其子目录中搜索包含以下单词的常规文件:“hello”

为什么这对我不起作用:

find . -type f | grep "hello"

答案1

你想要管道寻找进入参数,这将正确读取结果寻找

find . -type f -print0 | xargs grep "hello"

请参阅xargs(1)手册页以获取更多信息。

答案2

使用您建议的命令,您正在查找其中包含该字符串的任何文件名,而不是文件内容中的hello字符串。hello使用以下构造:

find . -type f -exec grep -n hello /dev/null {} +

答案3

因此,您实际上可以使用命令-regex的选项find

find . -type f -regex ".*/.*hello.*"

.*hello.*-- 匹配包含单词“hello”的名称。 .*/是必需的,因为find命令返回完整路径。

相关内容