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然后我得到结果。如何在整个磁盘中搜索?
grep -r盲目使用/不是一个好主意。几个目录(例如/dev和/proc)包含不应以不受控制的方式访问的特殊文件 - 这样做只会使您的屏幕充满错误,让您等到世界末日甚至崩溃您的系统。
您需要使用find来防止搜索下降到这些目录中并单独留下特殊文件:
使用显式否定-path选项:
find / -maxdepth 2 -type f ! -path '/proc/*' ! -path '/dev/*' -exec grep "xxx" {} +
Run Code Online (Sandbox Code Playgroud)使用-prune选项:
find / -maxdepth 2 -path '/proc' -prune -o -path '/dev' -prune -o -type f -exec grep "xxx" {} +
Run Code Online (Sandbox Code Playgroud)使用该-xdev选项避免完全下降到其他文件系统:
find / -maxdepth 2 -xdev -type f -exec grep "xxx" {} +
Run Code Online (Sandbox Code Playgroud)-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)
这是我对相关问题的较旧答案...
| 归档时间: |
|
| 查看次数: |
3813 次 |
| 最近记录: |