git grep通过文件扩展名


90

我知道,如果我只想对具有某些扩展名的文件使用grep格式,则可以这样做:

// searches recursively and matches case insensitively in only javascript files
// for "res" from the current directory
grep -iIr --include=*.js res ./

我一直在尝试寻找一种通过git grep来做到这一点的方法(以利用git grep的速度来利用它在树中存储的索引),但是没有用。我在这里看到不可能排除某些文件类型。

Answers:


145

是的,例如:

git grep res -- '*.js'

4
稍作修改-如果您不在存储库的根目录中,git grep res -- '/*.js'可能会更好……
twalberg 2012年

1
@twalberg:但是评论表明他确实想从当前目录[向下]查找吗?
CB Bailey

3
只是额外的信息:如果您希望指定一组文件扩展名,则可以使用它,git grep res -- *.js *.cs这在另一个问题中涉及
stk_sfr 2014年

3
有什么--成就?
aehlke '16

1
不要忘记的重要一点是'* .js'周围的单引号。如果他们不在那里,它将无法正常工作。(shell会在到达git之前拦截它)。
Hasen

3

尝试这样做:

find . -type f -iname '*.js' -exec grep -i 'pattern' {} +

1
{}是当前文件,+表示同时处理最大自变量的方式不同于{} \;(一次仅一个文件)。Checkman find
Gilles Quenot

这个问题要求“ git” grep。
JOK

0

如果要搜索所有分支,可以使用以下命令:

git log -Sres --all --name-only -- '*.js'

(我看到您指定了git grep;对我来说,这里的方法似乎更容易记住,更像是我通常需要的其他操作。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.