如何让unix在所有文件中搜索字符串“hello”?
我尝试了以下但是不起作用:
sudo grep "hello" | find / -name "*" 2>/dev/null
有没有人有其他想法?
谢谢。
答案 0 :(得分:27)
也许这个?
sudo cd / && grep -rn "hello" *
编辑:当然不需要'n'选项 - 它只显示行号,我发现它很好。 'r'选项告诉grep在目录中执行递归搜索。
答案 1 :(得分:10)
使用
grep -r 'pattern' /
如果grep
支持-r
,(GNU grep
支持);如果不使用
find / -type f -exec grep 'pattern' {} +
如果find
支持-exec
+
,请使用
find / -type f -printf '%p\0' | xargs -0 grep 'pattern'
如果您的find
支持-printf
而您的xargs
支持-0
,或
find / -type f -print0 | xargs -0 grep 'pattern'
如果您的find
仅支持-print0
而您的xargs
支持-0
。在所有其他情况下,回到
find / -type f | xargs grep 'pattern'
这是最大程度兼容的,但需要注意的是某些不寻常的文件名将无法被删除,并且精心设计的文件名可能会带来安全风险。
请注意,您必须是root用户才能确保搜索所有文件,并且除非您将-i
添加到grep
,否则搜索将区分大小写。
答案 2 :(得分:2)
此?
find . -exec grep -H "hello" {} \;