come escludere directory e file zippare una directory?


32

Devo comprimere una directory escludendo una sottodirectory e un file; Ho usato questo:

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

senza alcun successo; node_modulesè una cartella in quella principale mentre bower_componentsè all'interno dell'app cartella


qual è il tuo risultato e quali sono i tuoi risultati attesi?
DEN,

Vuoi escludere tutte le sottodirectory o solo alcune di esse?
Sergiy Kolodyazhnyy,

Risposte:


36

Faccio semplicemente una supposizione su quello che vuoi.

-x ".*"

esclude tutti i file che iniziano con un punto

fallo come:

-x .\*

escludi tutti i file (con un punto nel nome file)

fallo come:

-x \*.\*

-

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

escludi questa directory e tutti i file in essa contenuti

fallo come:

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

-

-x "*.zip"

esclude tutti i file zip

fallo come:

-x \*.zip

Si escludono node_modules due volte


2
grazie ho capito, usando vari post arrivati ​​a quello: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho

@arpho Il tuo commento sopra dovrebbe essere una risposta in quanto sembra funzionare per me ...
chesedo

7

Qualcosa del genere dovrebbe fare il trucco:

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/**.*

Dove di seguito -xè riportato un elenco di directory e tipi di file (estensione) da escludere.


Ora che so che **\*è per l'esclusione ricorsiva. Grazie molto.
Duc Tran

6

Supponendo che la tua directory sia un repository git (e a giudicare dalla domanda, molto probabilmente lo è), puoi aggiungere directory che vuoi escludere dal .gitignorefile e usare il git archivecomando per comprimere il contenuto della tua directory:

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

Nel tuo esempio, il .gitignorefile dovrebbe apparire così:

node_modules
app/bower_components

3

Questo funziona perfettamente per me su Ubuntu 16.04:

sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"

0

in ogni progetto salta node_modules in questo modo:

for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
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.