如何执行git grep并将检查的文件限制为一组文件。我希望能够grep查找MyFunc的.cpp和.h文件的内容。例如:
git grep "MyFunc" -- *.[hc]*
但是,这也匹配.c文件和.cs文件。
使用:
git grep "MyFunc" -- '*.cpp' '*.h'
引号是必要的,以便git扩展通配符而不是shell。如果省略它们,它只会搜索当前目录中的文件,而不是包含子目录。
这可以通过以下方式在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的文档引导我进入第二个解决方案。