Рекурсивный поиск определенного текста внутри определенных файлов, но только в определенных папках

У меня есть структура вложенных папок, содержащая множество папок и файлов.

Как искать в файлах шаблон, например "sampletext", но только в том случае, если имя файла соответствует шаблону (например, поиск только в файлах с расширением.txt) и, наконец, имя папки, в которой он содержится, должно совпадать с другим шаблоном? (например, "данные").

Я уверен, что мог бы написать сценарий оболочки, чтобы сделать это, но я уверен, что существуют умные однострочники, которые научат меня новым вещам!

заранее спасибо

1 ответ

Решение

Поскольку вы говорите, что у вас есть структура вложенных папок, я считаю, *data*/*txt не буду делать то, что вам нужно. Я предлагаю

find . –type d –name "*data*" –exec sh –c "grep sampletext /dev/null {}/*.txt" \;

/dev/null есть ли сила grep отображать имя файла, даже если оно работает в каталоге, который имеет только один .txt файл в нем.

Другие вопросы по тегам