递归搜索给定名称的文件,查找特定短语的实例并显示该文件的路径
我有一堆文件夹和子文件夹。除其他外,每个文件都包含一个名为 index.yml
的文本文件,其中包含有用的数据。我想搜索所有不同的 index.yml
文件以查找搜索字符串的实例。我必须能够看到几行上下文以及找到的 index.yml
文件的目录。
这几乎可以工作,但它没有给我文件名:
cat `find . -name 'index.yml'`| grep -i -C4 mySearchString
我怎样才能做到这一点并获取文件名?
我在 Windows 上使用 msys 时陷入困境。请注意,我似乎没有完整的 GNU grep,因此我无法按照其他 SO 问题中的建议运行 grep --exclude
或 grep -R
。
I have a bunch of folders and subfolders. Each one contains, amongst other things, a text file called index.yml
with useful data. I want to search through all of the different index.yml
files to find instances of a search string. I must be able to see a few lines of context and the directory of the index.yml
file that was found.
This almost works, but it doesn't give me the filename:
cat `find . -name 'index.yml'`| grep -i -C4 mySearchString
How can I do this and get the filename?
I am stuck on Windows with using msys. Note I don't seem to have full GNU grep, so I can't run grep --exclude
or grep -R
as suggested in other SO questions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
注意:没有在 msys 下实际测试。
try this:
note: not actually tested under msys.
一种可能性(我不知道 msys 到底接受什么):
/dev/null
用于确保至少有两个路径名,以便在每次匹配时打印路径名。 grep 的-H
选项具有类似的效果。find
中的-exec
...+
构造会导致将多个路径名传递给该命令的单个实例。如果未实现,则必须使用-exec
...\;
。One possibility (I don't know what msys accepts exactly):
The
/dev/null
serves to ensure there are at least two pathnames so that the pathname is printed with each match. The-H
option to grep has a similar effect.The
-exec
...+
construct infind
causes multiple pathnames to be passed to a single instance of the command. If it is not implemented, you'll have to use-exec
...\;
.