Re: multiple source file extensions
- From
Jeff King <peff@peff.net>
- Date
- May 2, 2015, 01:11 UTC
- Message-ID
- <20150502011100.GB5634@peff.net>
- In-Reply-To
- <CANuW5x3OBWNDnHeVbH7ZQaj5AUAingea6crJ0cF9AHFjcJE_bQ@mail.gmail.com>
On Fri, May 01, 2015 at 08:49:14PM -0400, Josh Hagins wrote:
Show 7 quoted lines
> If you're using a recent version of bash, you could enable the
> 'globstar' option:
>
> $ shopt -s globstar
> $ git grep 'pattern' **/*.{cc,cpp,h}
>
> Does that work?That will only pick up files that are in the working tree. Which is fine for a stock "git grep" with no options, but would not be right for grepping in the index or an older tree. For that, you can ask git to glob for you:
git grep pattern -- '*.cc' '*.cpp' '*.h'
Note that the "--" is important (it's what tells git "these are pathspecs and not revision names"; normally git will guess if you are passing literal pathnames, but the glob patterns fool the guessing machinery).
Unfortunately there is no way to use curly braces with git's pathspec, so you have to write out three separate `*` arguments rather than using the shell-style {cc,cpp,h}.
-Peff