cómo excluir directorios y archivos comprimiendo un directorio?

25

Yo, necesito comprimir un directorio excluyendo algún subdirectorio y archivo; Usé esto:

zip -r zipfile.zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.zip" -x "node_modules"

sin ningún éxito; node_modules es una carpeta en el principal, mientras que bower_components está dentro de la aplicación de carpeta     

pregunta arpho 05.11.2013 - 16:34

5 respuestas

27

Simplemente adivino lo que quieres.

-x ".*"

excluir todos los archivos que comiencen con un punto

hazlo como:

-x .\*

excluir todos los archivos (con un punto en el nombre del archivo)

hazlo como:

-x \*.\*

-

-x "app/bower_components" -x "node_modules"

excluye este directorio y todos los archivos en él

hazlo como:

-x app/bower_components/\* -x node_modules/\*

-

-x "*.zip"

excluir todos los archivos zip

hazlo como:

-x \*.zip

Excluye node_modules dos veces

    
respondido por el D-E-N 05.11.2013 - 18:20
6

Algo así debería ser el truco:

zip -r zipped.zip dir1/ -x */\.* *.git* \.* *.zip *.csv *.json *.rb *.bak *.swp *.back *.merge *.txt *.sh dir1/node_modules/**\* dir1/bower_components/**\* dir1/dist/**.*

Donde el siguiente -x es una lista de directorios y tipos de archivos (extensiones) para excluir.

    
respondido por el MikeiLL 10.06.2015 - 16:50
1

Esto funciona perfecto para mí en Ubuntu 16.04:

sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"
    
respondido por el Tarik 29.07.2017 - 10:58
1

Suponiendo que su directorio es un repositorio git (y a juzgar por la pregunta, es muy probable), puede agregar directorios que desea excluir al archivo .gitignore y usar el comando git archive para comprimir el contenido de su directorio:

git archive --format=zip HEAD -o zipfile.zip

En su ejemplo, el archivo .gitignore tendría que verse así:

node_modules
app/bower_components
    
respondido por el jkukul 16.06.2018 - 14:30
0

en cada proyecto omita node_modules como este:

for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
    
respondido por el nils petersohn 26.01.2017 - 14:36

Lea otras preguntas en las etiquetas