Назад | Перейти на главную страницу

рекурсивно grep для нескольких типов файлов

Я пытаюсь понять, как искать строку «_iterator_tag» рекурсивно во всех подкаталогах и в файлах с расширениями .cpp, .h, .hpp, .cxx, .inl, пока все, что я могу сделать, это искать каждый из этих файлов типы отдельно, как показано ниже grep -R "_iterator_tag" --include '* .cpp' Есть ли более быстрый способ поиска всех этих типов файлов вместе? Спасибо

использовать подтверждать. Он отлично подходит для поиска в исходном коде (а не для просмотра изображений или артефактов RCS, таких как каталоги .svn)

Вы можете указать несколько экземпляров --include в командной строке (они пишутся вместе "или").

Изменить: в частности

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

пытаться

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

Я определяю следующие псевдонимы в моем .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

Конечно, вам понадобится другой набор типов файлов.