通过git grep查找包含两个指定术语的文件

时间:2017-04-05 20:49:27

标签: python git unix grep git-grep

我试图使用git grep在我的git存储库中查找文件,我没有简单的方法可以在没有手动搜索的情况下这样做。我找到了一个这样的解决方法:

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

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

git grep -l -E 'term1|term2'

这实际上意味着向我展示包含term1或terms2的文件...是否有"显示这些条款的文件。"

我试图以一种对于将命令传递给其他命令不实用的方式使用git grep命令。我真的很讨厌使用python的子进程模块及其使用管道......

2 个答案:

答案 0 :(得分:1)

实现目标的两种方法:

1) -e选项指定的多种模式与--and标志相结合

  

<强> - 和
  的 - 或
  的 - 不
  (...)
  使用布尔表达式指定如何组合多个模式。

git grep -l -e 'term1' --and -e 'term2'
使用--all-match标志

2)

  

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

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

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

答案 1 :(得分:0)

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

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