%20%E4%B8%8A%E6%89%AB%E6%8F%8F%2F%E6%90%9C%E7%B4%A2%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88.png)
我们想要在 Gnu/Linux 机器上扫描单词。一个简单的方法是例如grep
grep -r "some_word" /var
但是,如果我们想要扫描整个文件系统,那么我们不能只扫描grep -r "some_word" /
,因为它扫描 , 中的文件/proc
(这些应该被排除)。因此我想知道是否有一些有用的工具可以用于此目的扫描?
我知道在 gnu 中grep
- 我们可以选择--exclude-dir
,但我仍然想知道在 Gnu/Linux 文件系统上搜索单词的更好方法。
答案1
find / -path /sys -prune -o -path /proc -prune -o -type f -exec grep -r "some_word" {} \;
我相信这就是你想要的
答案2
如果您使用它的选项,该find
实用程序可以保留在单个文件系统中-xdev
。这意味着该命令
find / -xdev -type f -exec grep -w -F 'word' {} +
...将保留在根文件系统内,不会进入/sys
或/proc
。
在根文件系统中,它将批量传递文件路径名来grep
查找单词word
。
如果您还想搜索安装了其他文件系统,则只需将它们列为顶级搜索路径即可。例如,如果/home
和/tank
是单独安装的分区,并且您想要搜索它们,
find / /home /tank -xdev -type f -exec grep -w -F 'word' {} +
该-xdev
谓词是标准的,并且应该适用于大多数(如果不是全部)的 实现find
。