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

发布于 2024-09-16 02:26:23 字数 439 浏览 5 评论 0原文

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

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

cat `find . -name 'index.yml'`| grep -i -C4 mySearchString

我怎样才能做到这一点并获取文件名?

我在 Windows 上使用 msys 时陷入困境。请注意,我似乎没有完整的 GNU grep,因此我无法按照其他 SO 问题中的建议运行 grep --excludegrep -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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

街角迷惘 2024-09-23 02:26:23

试试这个:

find -name "index.yml" -exec grep -i -H -C4 pattern {} \;

注意:没有在 msys 下实际测试。

try this:

find -name "index.yml" -exec grep -i -H -C4 pattern {} \;

note: not actually tested under msys.

初与友歌 2024-09-23 02:26:23

一种可能性(我不知道 msys 到底接受什么):

 find . -name index.yml -exec grep -i -C4 mySearchString /dev/null {} +

/dev/null 用于确保至少有两个路径名,以便在每次匹配时打印路径名。 grep 的 -H 选项具有类似的效果。

find 中的 -exec...+ 构造会导致将多个路径名传递给该命令的单个实例。如果未实现,则必须使用 -exec...\;

One possibility (I don't know what msys accepts exactly):

 find . -name index.yml -exec grep -i -C4 mySearchString /dev/null {} +

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 in find causes multiple pathnames to be passed to a single instance of the command. If it is not implemented, you'll have to use -exec...\;.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文