git grep por extensiones de archivo


91

Sé que, si quisiera grep para un patrón solo en archivos con ciertas extensiones, podría hacer esto:

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

También he intentado buscar una manera de hacer esto a través de git grep (para aprovechar la velocidad de git grep de los índices que almacena con su árbol), pero fue en vano. Vi aquí que no es posible excluir ciertos tipos de archivos.

Respuestas:


145

Si, por ejemplo:

git grep res -- '*.js'

4
Una pequeña modificación: si no está en la raíz de su repositorio, git grep res -- '/*.js'podría ser mejor ...
twalberg

1
@twalberg: Pero el comentario sugiere que quiere buscar desde el directorio actual [abajo], ¿no?
CB Bailey

3
Solo información adicional: si desea especificar un conjunto de extensiones de archivo, puede usar git grep res -- *.js *.csesto se trata en otra pregunta
stk_sfr

3
que logra el --?
aehlke

1
Una cosa importante que no se debe olvidar son las comillas simples alrededor de '* .js'. Si no están ahí, no funcionará. (el shell lo interceptará antes de que llegue a git).
Hasen

3

Intente hacer esto:

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

1
{}es el archivo actual y +significa tratar el máximo de argumentos al mismo tiempo de forma diferente {} \;(solo un archivo a la vez). Checkman find
Gilles Quenot

La pregunta pide "git" grep.
jok

0

si desea buscar en todas las ramas, puede utilizar lo siguiente:

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

(Veo que especifica git grep; para mí, el enfoque aquí parece más simple y más fácil de recordar, más como otras operaciones que necesito comúnmente).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.