递归搜索给定名称的文件,并查找特定短语的实例并显示该文件的路径

And*_*dyL 10 bash shell grep file msys

我有一堆文件夹和子文件夹.除了别的以外,每个文件都包含一个index.yml用有用数据调用的文本文件.我想搜索所有不同的index.yml文件以查找搜索字符串的实例.我必须能够看到几行上下文和index.yml找到的文件的目录.

这几乎可以工作,但它没有给我文件名:

cat `find . -name 'index.yml'`| grep -i -C4 mySearchString
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做并获得文件名?

使用msys我被困在Windows上.注意我似乎没有完整的GNU grep,所以我无法运行grep --excludegrep -R在其他SO问题中建议.

les*_*ana 10

试试这个:

find -name "index.yml" -exec grep -i -H -C4 pattern {} \;
Run Code Online (Sandbox Code Playgroud)

注意:实际上没有在msys下测试过.

  • @AndyL` {}`被替换为找到的文件名(或目录名).`\;`表示exec参数的结尾.斜线是从shell中分出的分号.有时也有必要逃避`{}`. (2认同)