很多时候,我们需要递归地在某个目录下对文件名含某些特定后缀的文件中搜索 出现给定pattern的行(或文件名),作为程序员尤其需要在工程目录中对所有源文件或是头文件进行搜索,本文介绍一个简单的利用grep的方法。
1. 利用grep对整个目录下的文件搜索
grep PATTERN ./* 只会对当前目录下的文件中搜索。
若要对当前目录下的文件进行搜索,还要对当前目录的子目录下的文件进行搜索,还要对当前目录的子目录的子目录下的文件进行搜索……,即递归搜索,可以加-r(或-R)选项,如查找使用static_cast的文件行:
[root@localhost test]# grep static_cast -r ./
查找使用static_cast的文件:
[root@localhost test]# grep static_cast -r ./ -l
2. 在源文件或头文件中搜索
由于当前目录下可能含有其他文件如.o, .sh等,若只希望在.cpp和.h中查找,可以加上- -include选项,这样写: