【问题标题】:How do I get all files with .md extension, in all subdirectories, that contain a phrase?如何获取所有子目录中包含短语的所有扩展名为 .md 的文件?
【发布时间】:2022-08-24 01:56:37
【问题描述】:

我有一个名为 \'dev\' 的父文件夹,里面是我的所有项目文件夹。例如,这些项目的自述文件包含应用程序类型 \"type: game\"。我想做的是:

  1. 搜索 dev 文件夹的所有子目录,找到所有带有 *.md\" 扩展名的文件

  2. 然后返回那些包含 .md 文件且包含短语 \"game\" 的目录的名称

    我已经尝试将find 管道化为grep,如下所示:

    find -type f -name \"*.md\" | grep -ril \"type: game\"
    

    但它只返回所有文件中包含短语 \"game\" 的所有子目录中的文件名。

  • 您正在寻找xargs 命令:find ... | xargs grep ...
  • 或者直接删除find 命令并运行grep --include \'*.md\' -ril \"type: game\"

标签: linux command-line grep find


【解决方案1】:

find . -type f -name "*.md" -print0 | xargs -0 grep -il "type: game" | sed -e 's/[^\/]*$//'

这将查找当前目录和子目录中名称以 .md 结尾的所有文件,然后查找包含该字符串的文件。然后我们使用 sed 修剪文件名,只留下包含以 .md 结尾的文件的目录,其中包含“type: game”。

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2011-03-02
    • 2021-01-05
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多