Если вам нужен рекурсивный поиск, у вас есть различные варианты.Вы должны рассмотреть ack
.
Если вы не используете GNU find
и xargs
:
find . -name '*.cc' -print0 -o -name '*.h' -print0 | xargs -0 grep hello /dev/null
Использование /dev/null
гарантируетвы печатаете имена файлов;-print0
и -0
имеют дело с именами файлов, содержащими пробелы (новые строки и т. д.).
Если у вас нет неприличных имен (с пробелами и т. д.), вы можете использовать:
find . -name '*.*[ch]' -print | xargs grep hello /dev/null
Это может подобрать несколько имен, которые вы не намеревались, потому что сопоставление с шаблоном нечеткое (но более простое), но в остальном работает.И это работает с не-GNU версиями find
и xargs
.