如何git grep只有一组文件扩展名

问题描述 投票:11回答:2

如何执行git grep并将检查的文件限制为一组文件。我希望能够grep查找MyFunc的.cpp和.h文件的内容。例如:

git grep "MyFunc" -- *.[hc]*

但是,这也匹配.c文件和.cs文件。

git grep file-extension
2个回答
12
投票

使用:

git grep "MyFunc" -- '*.cpp' '*.h'

引号是必要的,以便git扩展通配符而不是shell。如果省略它们,它只会搜索当前目录中的文件,而不是包含子目录。


4
投票

这可以通过以下方式在Windows中使用git bash时实现:

git grep "MyFunc" -- *.{cpp,h}

甚至更简单:

git grep "MyFunc" -- *.cpp *.h

git glossary上对pathspec的解释提到使用fnmatch(3)匹配模式。它匹配Shell and Utilities volume of IEEE Std 1003.1-2001, Section 2.13.1描述的模式(包括多个字符)并导致basic regular expressions matching multiple characters并给了我第一个解决方案。

进一步的研究通过查看glob的文档引导我进入第二个解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.