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

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

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

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

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

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

решение1

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

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

Он /dev/nullнужен для принудительного grepотображения имени файла, даже если он запущен в каталоге, .txtв котором находится только один файл.

Связанный контент