1

我正在尝试使用 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 模块及其对管道的使用......

4

2 回答 2

1

实现目标的两种方法:

1)将选项指定的多个模式-e--and标志

--and --or
--not ( …​ ) 指定如何使用布尔表达式组合多个模式。


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

2)使用--all-match标志

当给出与--or组合的多个模式表达式时,指定此标志以将匹配限制为具有匹配所有行的文件。

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

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

于 2017-04-06T06:19:36.670 回答
0

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

git grep -l -E 'term1' | grep term2
于 2017-04-05T21:05:38.003 回答