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

Unix zip directory maar sloot specifieke subdirectories uit (en alles daarbinnen)

Ik probeer een map te zippen (op Unix via SSH) maar ik moet een paar submappen uitsluiten (en alle bestanden en mappen daarin).

Tot nu toe heb ik dit:

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

Dat lijkt echter niet te werken.

Ik heb ook

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

geprobeerd, maar dat zal nog steeds subdirectories binnen ignoreDir1 en ignoreDir2 includeren.

De subdirectory structuur in de directories die ik wil uitsluiten is nogal substantieel, dus ik kan niet eenvoudigweg elke directory aan het -x argument toevoegen.

Weet iemand hoe ik dit moet doen?

Antwoorden (7)

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

Ik was er zo dichtbij!

Het eigenlijke commando dat ik nodig heb is:

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

Voor mijn specifieke systeem moest ik om een directory uit te sluiten aanhalingstekens plaatsen rond mijn uitgesloten directories en het werkte als een charme:

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

Notes:

– dit sloot zowel de uit te sluiten directory als alle bestanden erin uit.

– Je moet het volledige pad gebruiken naar de directories die je wilt uitsluiten!

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

@sulman met behulp van:

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

zal nog steeds dir1/ignoreDir1/ lege map in het zip-archief bevatten, gebruikmakend van:

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

zal de truc doen, u kunt ook een leidende gebruiken om in submappen te zoeken in plaats van alleen dir1

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

Het volgende werkt

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

Waar had je de ** voor nodig, @sulman?

Het werkt als een charme voor mij als volgt:

[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

Net als de andere antwoorden, maar dan met uitsluiting van mappen in hun geheel, in plaats van uitsluiting van alle inhoud van mappen:

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

Ik vond dit werken vanaf David R Heffelfinger :

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

Het sloot de directory en zijn inhoud uit.

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

Bij mij werkte het: zip -9 -r ~/folded.zip online -x folder/folder2/folder3/foldern/ **.

Het lijkt erop dat de asterisk moet worden ge-escaped.