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