Есть ли команда, которая позволяет искать ключевое слово в файлах в каталоге с определенным расширением?
Строка grep -irn "string" ./path
дает рекурсивный поиск всех файлов в каталоге ./path
. Мое конкретное требование - искать во всех файлах ./path
с таким расширением, как*.h
"*.h"
в кавычки.foobar.h
в текущем каталоге и повторите попытку.S и др (включить) ш ELL неавтоматического ионов
globstar
с помощью командыЭто приведет к тому,
**
что компонент имени файла будет означать все здесь и ниже. Такpath/**
значит все вpath
каталоге и его подкаталогах . (Вам не нужно вводить./
здесь.) Тогда вы можете использоватьискать все
.h
файлы в и подpath
.Вы можете у nПравильно установите опции с
shopt -u
.источник
источник
-exec
...+
тоже хорошо."string"
в свой ответ!Если вы можете установить что-то на свою машину, я предлагаю использовать ack .
Вы можете делать именно то, что вам нужно, и многое другое. Для вашего случая использования вы можете сделать:
Чтобы узнать, какие фильтры файлов поддерживаются изначально, выполните команду
ack --help=type
.источник
Как насчет этого?
Объяснение:
find
командойfind
командыfind
с-exec
, это спецификатор конца командыисточник
"*.h"
работает? Я бы подумал, что это нужно'*.h'
Если вы используете gnu grep, то у него есть флаг, который делает именно то, что вы хотите:
хотя я не думаю, что это доступно в других greps.
источник