我有一堆文件夹和子文件夹。除此之外,每个文件都包含一个名为index.yml
的文本文件,其中包含有用的数据。我想搜索所有不同的index.yml
文件以查找搜索字符串的实例。我必须能够看到几行上下文和找到的index.yml
文件的目录。
这几乎可行,但它没有给我文件名:
cat `find . -name 'index.yml'`| grep -i -C4 mySearchString
我该怎么做并获取文件名?
使用msys,我被困在Windows上。注意我似乎没有完整的GNU grep,因此我无法按照其他SO问题的建议运行grep --exclude
或grep -R
。
答案 0 :(得分:10)
试试这个:
find -name "index.yml" -exec grep -i -H -C4 pattern {} \;
注意:未在msys下进行实际测试。
答案 1 :(得分:0)
一种可能性(我不知道msys接受的是什么):
find . -name index.yml -exec grep -i -C4 mySearchString /dev/null {} +
/dev/null
用于确保至少有两个路径名,以便每次匹配时都会打印路径名。 grep的-H
选项具有类似的效果。
-exec
中的+
... find
构造导致多个路径名传递给命令的单个实例。如果未实施,则必须使用-exec
... \;
。