本文转自:http://edsionte.com/techblog/archives/3164
之前于童鞋问我如下问题:
在/etc目录下如何查找包含’root’关键字的所有文件?
对于一个指定的文件来说通常使用下面的方法来查找关键字:
grep 'keyword' file
如果你懂得正则表达式,那么还可以对关键字作更细致的匹配。但是利用grep查找指定目录下的所有文件我尚不清楚,通过man手册以及论坛求助基本解决了上面的那个问题。
1.如何递归查找
grep通常只能查找指定数目的文件,如果需要查找某个目录下的所有文件必须添加-R或-r选项。这个选项比较好理解,如果我们要删除一个非空的目录那么也必须对rm命令添加-r或-R选项。因此我们可以通过一下命令来完成本文一开始所提出的问题:
grep -R 'boot' /etc
这样好像已经解决了问题,不过从输出的结果来看有一些匹配并不符合我们的要求。
grep -R -w -n 'boot' /etc
有时候我们只需要知道该关键字包含在那个文件中,因此我们加入-l选项:
grep -R -w -l 'boot' /etc
这样以来的确方便了查看,不过由于输出结果在一个屏幕下不能完全显示,因此我们可以用more命令分屏查看,或者直接将输出结果重定位于指定的文件中:
grep -R -w -l 'boot' /etc > ./output.txt
这样就可以方便的查看输出结果了。