Ответ 1
попробуйте следующее:
find -name "index.yml" -exec grep -i -H -C4 pattern {} \;
Примечание: на самом деле не проверено в msys.
У меня есть куча папок и подпапок. Каждый из них содержит, среди прочего, текстовый файл с именем 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
... \;
.