tengo el mismo problema regularmente, y acabo de ir y hackear git find
- si no usa Debian package, puede copiar el script git-find
en /usr/lib/git-core/
(o similar) y enj oy eso.
Se puede utilizar en varios modos, el más fácil de lo que es, en efecto:
git find \*middleware\* # or
git find '*middleware*' # which is short for
git find -name '*middleware*'
La combinación también es posible (y casi tan flexible como regulares find
, sólo hay que escribir el -a
explícitamente):
git find \(-name \*.java -o -name \*.js \) -a ! -ipath \*/test/\*
tiene un par de opciones más, la mayoría de los cuales se encargan de filtrar el nombre o (es decir, por debajo del directorio de trabajo actual parcial) ruta completa, algunos de ellos mayúsculas y minúsculas (-iname
y amigo s), y dos opciones globales, una para alternar expresiones regulares entre POSIX Basic (predeterminado) y POSIX Extended, la otra alterna enlaces simbólicos (valor predeterminado activado); esto solo busca archivos (y enlaces simbólicos), no directorios o submódulos ("gitlinks") por diseño.
También puede pasar la lista de archivos para regular de find(1) si no es demasiado largo (hay que pasar en la línea de comandos), lo que permite cosas como ...
git find -- -mtime -100
... en ligero costo del sistema de archivos (find
accede al sistema de archivos), pero, por otro lado, funciona casi la totalidad (no material de profundidad de búsqueda) de find
, y solo se puede operar en archivos "en el índice", es decir, conocido por git (presente en el compromiso HEAD o git add
ed).
Sin embargo, es un poco exigente con los conflictos no resueltos. Si nota algún problema, simplemente envíeme una nota (aquí, o a través de IRC).
PD: Siéntete libre de cabildear con la gente oficial de git para subárbol-fusionar el repositorio git-find, estaría más que feliz de tenerlo integrado en git adecuada (la licencia es aún más liberal, solo necesitas la mksh
shell en una versión algo reciente (50 debería ser suficiente), pero es el shell Unix más extendido hoy en día, así que está bien).
Esta es la respuesta correcta. Haría git ls-files | grep 'nombre que estás buscando' para filtrar en la gran lista de archivos que devolverá git ls-files. (También alias ls-files a ls porque lo uso con frecuencia) – I82Much
Podemos hacerlo con el comando '' git ls-files "* .sh" '' o '' git ls-files | grep .sh'' –
Hace mucho que tengo el alias: 'find =! git ls-files | grep', pero a veces me gustaría limitar la búsqueda a una ruta particular, por ejemplo, 'git find foo bar/baz'. ¿Alguna idea de cómo implementar eso? – JFlo