我需要在当前目录及其子目录中搜索包含以下单词的常规文件:“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
命令返回完整路径。