shell - para - ignorar carpetas en git
Busque e imprima rápidamente todos los archivos en una carpeta, recursivamente, excluyendo los de `node_modules` y`.git` (1)
Para excluir archivos solo directamente de la carpeta de la búsqueda:
find . -not /( -path ''./.git'' -prune /) -not /( -path ''./node_modules'' -prune /) -type f
Si desea excluir ciertas rutas que están en subcarpetas , puede hacerlo también con *
comodín.
Digamos que también tiene node_modules
dentro de stuff1
y stuff2
, y además carpetas dist
y lib
:
find . -not /( -path ''./.git'' -prune /) -not /( -path ''./node_modules'' -prune /) -not /( -path ''./*/node_modules'' -prune /) -not /( -path ''./*/dist'' -prune /) -not /( -path ''./*/lib'' -prune /) -type f
Probado en Windows usando git bash 1.9.5
Sin embargo, parece que no funciona correctamente en Windows cuando se pasa un filtro como -name ''*.js''
. La solución podría ser no usar -name
y pipe to grep
lugar.
Felicitaciones a @Daniel C. Sobral
Considere la siguiente estructura de carpetas comenzando en alguna carpeta raíz
/root/
/root/.git
/root/node_modules
/root/A/
/root/A/stuff1/
/root/A/stuff2/
/root/A/node_modules/
/root/B/
/root/A/stuff1/
/root/A/stuff2/
/root/B/node_modules/
...
Ahora estoy en /root
y me gustaría encontrar todos mis archivos dentro de él. Tengo un pequeño número de mis propios archivos y la gran cantidad de archivos dentro de node_modules
y .git
.
Por eso, atravesar node_modules
y filtrarlo es inaceptable, ya que lleva demasiado tiempo. Quiero que el comando nunca entre en la carpeta node_modules
o .git
.