2011-07-19 10:19:13 +0000 2011-07-19 10:19:13 +0000
121
121

directory zip di Unix ma ha escluso specifiche sottodirectory (e tutto ciò che si trova al loro interno)

Sto cercando di zippare una directory (su Unix via SSH) ma ho bisogno di escludere un paio di sottodirectory (e tutti i file e le directory al loro interno).

Finora ho questo:

zip -r myarchive.zip dir1 -x dir1/ignoreDir/**/*

Che però non sembra funzionare.

Ho anche provato

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/* dir1/ignoreDir2/*

Tuttavia questo includerà ancora le sottodirectory all'interno di ignoreDir1 e ignoreDir2.

La struttura delle sottodirectory nelle directory che voglio escludere è piuttosto sostanziale, quindi non posso semplicemente aggiungere ogni directory all'argomento -x.

Qualcuno sa come farlo?

Risposte (7)

134
134
134
2011-07-19 10:32:23 +0000

Ero così vicino!

Il comando effettivo di cui ho bisogno è:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/ **\* dir1/ignoreDir2/** \*
73
73
73
2012-10-31 11:43:43 +0000

Per il mio particolare sistema, per escludere una directory ho dovuto mettere le virgolette intorno alle mie directory escluse e ha funzionato alla grande:

zip -r myarchive.zip dir1 -x "dir1/ignoreDir1/*" "dir1/ignoreDir2/*"

Note:

– questo escludeva sia la directory da escludere che tutti i file al suo interno.

– Devi usare il percorso completo delle directory che vuoi escludere!

9
9
9
2013-10-30 11:31:16 +0000

@sulman usando:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/\*\*\* dir1/ignoreDir2/\*\*\*

includerà ancora dir1/ignoreDir1/ cartella vuota nell'archivio zip, usando:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1\*\* dir1/ignoreDir2\*\*

farà il trucco, si può anche usare un *\ per cercare nelle sottocartelle invece che solo dir1

7
7
7
2012-09-17 05:00:36 +0000

Il seguente farà

zip -r myarchive.zip dir1 -x dir1/ignoreDir1* dir1/ignoreDir2*

A cosa ti serviva lo **, @sulman?

Per me funziona benissimo come segue:

[root@ip-00-000-000-000 dir1]# ls -lrt dir1/ 
total 16
drwxr-xr-x 2 root root 4096 Oct 31 07:38 ignoredir1
drwxr-xr-x 2 root root 4096 Oct 31 07:38 ignoredir2
drwxr-xr-x 2 root root 4096 Oct 31 07:39 dir3
-rw-r--r-- 1 root root 8 Oct 31 07:39 test.txt

[root@ip-00-000-000-000 temp]# zip -r dir1.zip dir1 -x dir1/ignoredir1\* dir1/ignoredir2\*
  adding: dir1/ (stored 0%)
  adding: dir1/dir3/ (stored 0%)
  adding: dir1/dir3/test3.txt (deflated 13%)
  adding: dir1/test.txt (stored 0%)
1
1
1
2016-01-22 14:39:17 +0000

Proprio come le altre risposte, ma escludendo interamente le directory, invece di escludere tutti i contenuti delle directory:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/\* dir1/ignoreDir2/\*
0
0
0
2014-10-03 18:28:57 +0000

Ho trovato questo che funziona da David R Heffelfinger :

zip -r myarchive.zip dir1 -x dir1/ignoreDir1\* dir1\ignorDir2\*

Ha escluso la directory e il suo contenuto.

-1
-1
-1
2015-12-01 13:29:01 +0000

Per me ha funzionato: zip -9 -r ~/folded.zip online -x folder/folder2/folder3/foldern/ *.

Sembra che l'asterisco debba essere sfuggito.