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