如何让 unix 在所有文件中搜索字符串“hello”?
我尝试了以下方法,但它不起作用:
sudo grep "hello" | find / -name "*" 2>/dev/null
有没有人有任何其他想法?
谢谢你。
也许这个?
sudo cd / && grep -rn "hello" *
编辑:当然不需要'n'选项-它只是显示行号,我觉得很好。'r' 选项告诉 grep 在目录中执行递归搜索。
采用
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'
这是最大程度的兼容,但需要注意的是某些不寻常的文件名将无法被 grep 和精心制作的文件名可能会带来安全风险。
请注意,您必须是 root 才能确保搜索所有文件,并且搜索将区分大小写,除非您添加-i
到grep
.
这?
find . -exec grep -H "hello" {} \;