У меня есть несколько папок и подпапок. Каждый содержит, среди прочего, текстовый файл с именем index.yml
с полезными данными. Я хочу просмотреть все различные файлы index.yml
, чтобы найти экземпляры строки поиска. Я должен видеть несколько строк контекста и каталог файла index.yml
, который был найден.
Это почти работает, но не дает мне имя файла:
cat `find . -name 'index.yml'`| grep -i -C4 mySearchString
Как я могу сделать это и получить имя файла?
Я застрял в Windows с использованием msys. Заметьте, что у меня нет полного GNU grep, поэтому я не могу запустить grep --exclude
или grep -R
, как предложено в других вопросах SO.
попробуйте следующее:
find -name "index.yml" -exec grep -i -H -C4 pattern {} \;
примечание: на самом деле не тестировалось под msys.
Одна возможность (я не знаю, что именно принимает msys):
find . -name index.yml -exec grep -i -C4 mySearchString /dev/null {} +
/ dev / null
служит для обеспечения как минимум двух путей, чтобы путь печатается при каждом совпадении. Аналогичный эффект имеет параметр -H
команды grep.
Конструкция -exec
... +
в find
заставляет передавать несколько имен пути одному экземпляру команды. Если он не реализован, вам придется использовать -exec
... \;
.