ファイル拡張子によるgitgrep


91

特定の拡張子を持つファイルでのみパターンをgrepしたい場合は、次のようにすることができます。

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

私はgitgrepを介してこれを行う方法を探していましたが(ツリーとともに格納されているインデックスからgit grepの速度を利用するため)、役に立ちませんでした。私が見た、ここで特定の種類のファイルを除外することは不可能であること。

回答:


145

はい、例:

git grep res -- '*.js'

4
1git grep res -- '/*.js'
つのわずか

1
@twalberg:しかし、コメントは、彼が現在のディレクトリ[下]から調べたいことを示唆しています。
CBベイリー

3
追加情報:ファイル拡張子のセットを指定する場合は、git grep res -- *.js *.csこれを使用できます。これについては、別の質問で説明しています
stk_sfr 2014

3
何を--達成しますか?
aehlke 2016

1
忘れてはならない重要なことは、「*。js」を一重引用符で囲むことです。それらがない場合、それは機能しません。(シェルはgitに到達する前にそれをインターセプトします)。
hasen 2017

3

これを試してみてください:

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

1
{}は現在のファイルであり+{} \;(一度に1つのファイルのみ)とは異なり、最大の引数を同時に処理することを意味します。チェックman find
GillesQuenot18年

質問は「git」grepを要求します。
JOK

0

すべてのブランチを検索する場合は、次を使用できます。

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

(git grepを指定しているようです。私には、ここでのアプローチはより単純で覚えやすいように見えます。私が一般的に必要とする他の操作と同じです。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.