我正在尝试弄清楚如何在所有子目录中递归搜索“_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
当然,您需要一组不同的文件类型。