![如何在整个系统(Linux)中搜索特定字符串?](https://linux22.com/image/802105/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%95%B4%E4%B8%AA%E7%B3%BB%E7%BB%9F%EF%BC%88Linux%EF%BC%89%E4%B8%AD%E6%90%9C%E7%B4%A2%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
我需要找到这个字符串:
7z a -p
我试过了:
grep -iR“7z a-p”/
但过了一会儿它似乎就挂了,并出现很多:
grep: /sys/class/vc/vcs5/power/autosuspend_delay_ms: Input/output error
grep: warning: /sys/class/vc/vcsa5/subsystem: recursive directory loop
grep: /sys/class/vc/vcsa5/power/autosuspend_delay_ms: Input/output error
grep: warning: /sys/class/vc/vcs6/subsystem: recursive directory loop
编辑 - 但是,这似乎只是查看静态文本文件。此外,运行时区域、内存和进程怎么样?即整个系统?例如对于 mysql:
ps aux | grep "mysql -u user -p"
显示:
38164 4292 pts/0 S+ 13:16 0:00 mysql -uodbcuser -px xxxxxxxx
有趣的是,ps aux 确实使用 xxxxx 隐藏了密码。我可以尝试使用 7zip,但它非常快,它必须在您运行 ps aux 命令的同时运行才能“捕获它”。
答案1
您应该从命令中排除/sys/
诸如/proc/
和 之类的目录:/dev/
grep -iR --exclude-dir='/sys' --exclude-dir='/proc' --exclude-dir='/dev' "7z a -p" /
答案2
假设该字符串位于脚本文件中。您可以尝试ack
(又名ack-grep
)。
它将自动仅选择脚本和源文件,但您可以使用选项让它搜索所有文件-a
(在版本 1 中)。在版本 2 中,默认搜索所有非二进制文件。
您可以指定要忽略的目录或指定要搜索的重点或忽略特定文件类型。
--[no]ignore-dir=name
--[no]elisp .el
--[no]erlang .erl .hrl
--[no]fortran .f .f77 .f90 .f95 .f03 .for .ftn .fpp
for a few examples
有许多选项与 GNU 的相同,grep
因此会很熟悉。
内置的过滤系统非常强大且可配置。由于有过滤功能,搜索速度比使用 快得多grep
。
安装再简单不过了。
答案3
你可以用以下方法丢弃错误
grep -iR“7z a-p”/2> / dev / null