grep -r 并在整个磁盘中搜索

sen*_*ale 2 linux

grep -r xxx" /*
grep: /dev/log: No such device or address
grep: /dev/dvd: No medium found
grep: /dev/cdrw: No medium found
grep: /dev/cdrom: No medium found
Run Code Online (Sandbox Code Playgroud)

但需要超过 2 小时没有结果。如果我使用grep -r "xxx" /etc然后我得到结果。如何在整个磁盘中搜索?

thk*_*ala 5

grep -r盲目使用/不是一个好主意。几个目录(例如/dev/proc)包含不应以不受控制的方式访问的特殊文件 - 这样做只会使您的屏幕充满错误,让您等到世界末日甚至崩溃您的系统。

您需要使用find来防止搜索下降到这些目录中并单独留下特殊文件:

-type f只会让常规文件通过。您可以根据需要使用尽可能多的-path和/或-prune选项来微调find.

还要注意使用多个文件调用的-exec ... +变体,而不是为每个文件启动一个单独的进程。或者,您可以使用调用:-execgrepgrepxargsgrep

find / -maxdepth 2 -xdev -type f -print0 | xargs -r -0 grep "xxx"
Run Code Online (Sandbox Code Playgroud)

是我对相关问题的较旧答案...