通过 git grep 查找具有两个指定术语的文件
Finding files with both of two specified terms via git grep
我正在尝试使用 git grep 在我的 git 存储库中查找文件,如果不手动搜索,我没有简单的方法可以做到这一点。我找到了这样的解决方法:
git grep -l 'term1' | xargs -i grep -l term2 {}
但我想知道是否有类似的方法不需要 xargs:
git grep -l -E 'term1|term2'
这实际上意味着向我显示包含 term1 或 term2 的文件...是否有 "show me files with BOTH these terms."
我正在尝试以一种不实用的方式使用 git grep 命令以将命令管道化到其他命令中。我真的很讨厌使用 python 的子流程模块及其对管道的使用...
您可以将它与另一个 grep 命令结合使用:
git grep -l -E 'term1' | grep term2
实现目标的两种方式:
1) 将 -e
选项指定的多个模式与 --and
标志
组合
--and
--or
--not
( … )
Specify how multiple patterns are combined using Boolean expressions.
git grep -l -e 'term1' --and -e 'term2'
2) 使用 --all-match
标志
When giving multiple pattern expressions combined with --or, this flag
is specified to limit the match to files that have lines to match all
of them.
git grep -l --all-match -e 'term1' -e 'term2'
我正在尝试使用 git grep 在我的 git 存储库中查找文件,如果不手动搜索,我没有简单的方法可以做到这一点。我找到了这样的解决方法:
git grep -l 'term1' | xargs -i grep -l term2 {}
但我想知道是否有类似的方法不需要 xargs:
git grep -l -E 'term1|term2'
这实际上意味着向我显示包含 term1 或 term2 的文件...是否有 "show me files with BOTH these terms."
我正在尝试以一种不实用的方式使用 git grep 命令以将命令管道化到其他命令中。我真的很讨厌使用 python 的子流程模块及其对管道的使用...
您可以将它与另一个 grep 命令结合使用:
git grep -l -E 'term1' | grep term2
实现目标的两种方式:
1) 将 -e
选项指定的多个模式与 --and
标志
--and
--or
--not
( … )
Specify how multiple patterns are combined using Boolean expressions.
git grep -l -e 'term1' --and -e 'term2'
2) 使用 --all-match
标志
When giving multiple pattern expressions combined with --or, this flag is specified to limit the match to files that have lines to match all of them.
git grep -l --all-match -e 'term1' -e 'term2'