git grep per estensioni di file


91

So che, se volessi grep per un pattern solo su file con determinate estensioni, potrei farlo:

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

Ho provato a cercare un modo per farlo anche tramite git grep (per sfruttare la velocità di git grep dagli indici che memorizza con il suo albero), ma senza alcun risultato. Ho visto qui che non è possibile escludere alcuni tipi di file.

Risposte:


145

Sì, ad esempio:

git grep res -- '*.js'

4
Una leggera modifica: se non sei nella radice del tuo repository, git grep res -- '/*.js'potrebbe essere meglio ...
twalberg

1
@twalberg: Ma il commento suggerisce che vuole cercare dalla directory corrente [in basso], sicuramente?
CB Bailey

3
Solo informazioni extra: se desideri specificare un set di estensioni di file, puoi utilizzarlo, git grep res -- *.js *.csquesto è coperto da un'altra domanda
stk_sfr

3
cosa si --ottiene?
aehlke

1
Una cosa importante da non dimenticare sono le virgolette singole attorno a "* .js". Se non ci sono, non funzionerà. (la shell lo intercetterà prima che raggiunga git).
hasen

3

Prova a farlo:

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

1
{}è il file corrente e +significa trattare il numero massimo di argomenti contemporaneamente a differenza di {} \;(solo un file alla volta). Checkman find
Gilles Quenot

La domanda richiede "git" grep.
scherzo

0

se vuoi cercare in tutti i rami, puoi usare quanto segue:

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

(Vedo che specifichi git grep; a me l'approccio qui sembra più semplice e facile da ricordare, più simile ad altre operazioni di cui ho bisogno comunemente.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.