Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过git grep查找同时包含两个指定术语的文件_Python_Git_Unix_Grep_Git Grep - Fatal编程技术网

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

Python 通过git grep查找同时包含两个指定术语的文件,python,git,unix,grep,git-grep,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命令,将命令管道化

我正在尝试使用git grep在我的git存储库中查找文件,如果不进行手动搜索,我没有简单的方法。我发现了一个类似这样的解决方法:

git grep -l 'term1' | xargs -i grep -l term2 {}
但我想知道是否有类似的方法不需要xargs:

git grep -l -E 'term1|term2'
这实际上意味着向我显示包含term1或terms2的文件。。。是否有“向我显示包含这两个术语的文件”


我试图以一种不实用的方式使用git grep命令,将命令管道化到其他命令中。我真的很讨厌使用python的子流程模块和它对管道的使用…

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

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

实现目标的两种方法:

1)
-e
选项指定的多个模式与
--和
标志组合在一起

--和
--或
--不
(…​ )
指定如何使用布尔表达式组合多个图案


2)使用
--所有匹配
标志

当给出多个模式表达式并使用--或此标志时 指定以将匹配限制为具有要匹配所有行的文件 是的

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