8

如何让 unix 在所有文件中搜索字符串“hello”?

我尝试了以下方法,但它不起作用:

sudo grep "hello" | find / -name "*" 2>/dev/null

有没有人有任何其他想法?

谢谢你。

4

3 回答 3

28

也许这个?

sudo cd / && grep -rn "hello" *

编辑:当然不需要'n'选项-它只是显示行号,我觉得很好。'r' 选项告诉 grep 在目录中执行递归搜索。

于 2012-06-25T10:09:00.077 回答
11

采用

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 才能确保搜索所有文件,并且搜索将区分大小写,除非您添加-igrep.

于 2012-06-25T11:10:56.917 回答
2

这?

find . -exec grep -H "hello" {} \;
于 2012-06-25T10:15:59.560 回答