【问题标题】:Finding files with both of two specified terms via git grep通过 git grep 查找同时具有两个指定术语的文件
【发布时间】:2017-04-05 20:49:26
【问题描述】:

我正在尝试使用 git grep 在我的 git 存储库中查找文件,如果没有手动搜索,我没有简单的方法可以做到这一点。我找到了这样一种解决方法:

git grep -l 'term1' | xargs -i grep -l term2 {}

但我想知道是否有类似于不需要 xargs 的方法:

git grep -l -E 'term1|term2'

这基本上意味着向我显示包含 term1 或 term2 的文件...是否有“显示包含这两个术语的文件”。

我正在尝试以一种不实用的方式使用 git grep 命令将命令传递到其他命令。我真的很讨厌使用 python 的 subprocess 模块及其对管道的使用...

【问题讨论】:

    标签: python git unix grep git-grep


    【解决方案1】:

    实现目标的两种方式:

    1)-e选项指定的多个模式与--and标志结合起来

    --和
    --或
    --非
    ( …​ )
    指定如何使用布尔表达式组合多个模式。

    git grep -l -e 'term1' --and -e 'term2'
    

    2) 使用--all-match 标志

    当给出多个与--或结合的模式表达式时,这个标志 指定将匹配限制为具有匹配所有行的文件 其中。

    git grep -l --all-match -e 'term1' -e 'term2'
    

    https://git-scm.com/docs/git-grep#git-grep--e

    【讨论】:

      【解决方案2】:

      您可以将其与另一个 grep 命令结合使用:

      git grep -l -E 'term1' | grep term2
      

      【讨论】:

        猜你喜欢
        • 2017-09-09
        • 2012-11-18
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多