You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何递归查找含指定短语的.md文件所在目录

原命令失效原因

你之前的命令存在两个问题,导致结果不符合预期:

  • 管道传递给grep的是find输出的文件路径字符串,此时grep没有收到要扫描的目标文件参数,-r递归参数不生效,只会匹配管道传过来的路径文本本身,不会读取对应md文件的内容做检索
  • 即使grep正确匹配到文件内容,默认输出的是文件自身路径,不会返回文件所在的目录名,和你要的结果不匹配
可用命令

直接执行下面的命令即可实现需求:

find ./dev -type f -name "*.md" -exec grep -l "type: game" {} \; | xargs dirname

命令逻辑说明

  • find ./dev -type f -name "*.md":指定从dev目录开始遍历,筛选所有后缀为.md的普通文件
  • -exec grep -l "type: game" {} \;:对每一个找到的md文件,检索文件内容是否包含type: game字段,-l参数表示匹配成功后输出该文件的完整路径
  • | xargs dirname:将前面输出的所有匹配文件的路径传给dirname命令,提取每个文件对应的上级目录名称,也就是你需要的项目文件夹名

如果你的目录或文件名可能包含空格、特殊字符,推荐使用兼容性更好的写法,避免路径解析错误:

find ./dev -type f -name "*.md" -exec grep -lZ "type: game" {} \; | xargs -0 dirname

该写法通过-Z和-0参数使用null字符分隔路径,支持所有合法的文件、目录命名格式。

内容的提问来源于stack exchange,提问作者marti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 06:24:16