Рекурсивный поиск определенного текста внутри определенных файлов, но только в определенных папках
У меня есть структура вложенных папок, содержащая множество папок и файлов.
Как искать в файлах шаблон, например "sampletext", но только в том случае, если имя файла соответствует шаблону (например, поиск только в файлах с расширением.txt) и, наконец, имя папки, в которой он содержится, должно совпадать с другим шаблоном? (например, "данные").
Я уверен, что мог бы написать сценарий оболочки, чтобы сделать это, но я уверен, что существуют умные однострочники, которые научат меня новым вещам!
заранее спасибо
1 ответ
Поскольку вы говорите, что у вас есть структура вложенных папок, я считаю, *data*/*txt
не буду делать то, что вам нужно. Я предлагаю
find . –type d –name "*data*" –exec sh –c "grep sampletext /dev/null {}/*.txt" \;
/dev/null
есть ли сила grep
отображать имя файла, даже если оно работает в каталоге, который имеет только один .txt
файл в нем.