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

301
jon

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

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

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

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

1

1 ответ на вопрос

2
Scott

Since you say you have a nested folder structure, I believe *data*/*txt won’t do what you need.  I suggest

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

The /dev/null is there to force grep to display the filename even when it runs on a directory that has only one .txt file in it.

Похожие вопросы