如何在整个系统(Linux)中搜索特定字符串?

如何在整个系统(Linux)中搜索特定字符串?

我需要找到这个字符串:

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

相关内容