递归地 grep 多种文件类型

递归地 grep 多种文件类型

我正在尝试弄清楚如何在所有子目录中递归搜索“_iterator_tag”字符串,并在扩展名为 .cpp、.h、.hpp、.cxx、.inl 的文件中搜索,现在我所能做的就是分别搜索这些文件类型,如下所示 grep -R“_iterator_tag” --include '*.cpp' 有没有更快的方法来一起搜索所有这些文件类型?谢谢

答案1

使用确认. 它非常适合搜索源代码(而不是查找图像或 RCS 工件,如 .svn 目录)

答案2

--include您可以在命令行上指定多个实例(它们通过“或”连接在一起)。

编辑:具体来说

 grep -r --include '*.cpp' --include '*.h' --include '*.hpp' --include '*.cxx' --include '*.inl' "_iterator_tag" /some/path

答案3

尝试

find /some/path -name \( '*.cpp' -o -name '*.h' -o -name '*.hpp' -o -name '*.cxx' -o -name '*.ini' \) | xargs grep "_iterator_tag"

答案4

我在 .bashrc 中定义了以下别名

ffg() { eval find $1 | xargs -n 1 grep -nH $2 2>/dev/null ; }
fc() { ffg "-name \*.c -o -name \*.cpp" "$*"; }
fh() { ffg "-name \*.h -o -name \*.hpp" $* ; }
fch() { ffg "-name \*.c -o -name \*.cpp -o -name \*.h -o -name \*.hpp" $* ; }

所以我通常会这样做:

cd <root subdir>    
fch _iterator_tag

当然,您需要一组不同的文件类型。

相关内容