Come estrarre solo una cartella specifica da un archivio zippato in una determinata directory?


59

Come si estrae una cartella specifica da un archivio zippato in una determinata directory?

Ho provato a usare

unzip "/path/to/archive.zip" "in/archive/folder/" -d "/path/to/unzip/to"

ma questo crea solo la cartella sul percorso in cui voglio decomprimerlo e non fa altro.

Risposte:


60
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path> 

funziona bene su EL 6


3
cos'è questo EL 6?
Zelda,

2
Enterprise Linux 6 (RHEL6) - Red Hat.
slm

Anche questo funziona; è sostanzialmente la stessa risposta di Mark Adler, ma in un modo leggermente diverso.
Enkouyami,

@Enkouyami Meno differenze nella citazione, sembra esattamente la stessa cosa.
Camilo Martin,

1
@Enkouyami Perché la barra rovesciata tra virgolette sfugge a un personaggio (si suppone che l'asterisco sia in fase di escape, ma immagino sia un errore di battitura), mentre nelle virgolette singole la barra rovesciata non viene interpretata. Se uno vuole una barra rovesciata letterale, "\\"verrebbe usato (altrimenti dovresti sempre ricordare quali personaggi sono fughe speciali). Quindi è una differenza di citazione se l'autore intendesse "citare il carattere glob" (non necessario). In ogni caso, una singola barra rovesciata del genere è un errore di battitura.
Camilo Martin

39

Provare:

unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to

4
fatto? Ottengo caution: filename not matched: foldername/\*quando corro unzip $repozip "$2-master/\*" -d /srv/www/magento/dov'è $2il nome della cartella nella zip Voglio estrarre tutti i file e le cartelle da
jeremy.bass

10
Ha funzionato senza \, giusto "path/*".
Alex,

8
C'è un modo per estrarre il contenuto di "in / archive / folder / *" che non conserva il percorso "in / archive / folder /"? Finisco per usarlo in mvseguito per ottenere i file dove ne avevo bisogno.
jerrygarciuh,

6
Usa -jper quello.
Mark Adler,

4
-jrimuove tutte le informazioni sul percorso e tutti i file vanno nella cartella di destinazione. C'è un modo per rimuovere solo la parte comune del percorso? Simile alla cerniera -r.
Bob Stein,

6

Le due risposte esistenti sono entrambe corrette, ma è un po 'complicato specificare la directory di destinazione, che dovrebbe essere meglio chiarita.

Diciamo che /target/root/è la directory target dell'azione di decompressione originale, ad esempio:

unzip -qq src.zip -d "/target/root/"

Quindi, dobbiamo usare lo stesso /target/root/della directory target in seguito, anche se vogliamo estrarre solo una sottodirectory specifica, poiché funziona il modo unzip:

unzip -qq src.zip "sub/dir/*" "/target/root/"

Dopotutto, la regola è in realtà semplice, utilizzare la stessa directory radice di destinazione per l' -dopzione .

A proposito, l' -qqopzione è per decomprimere per essere davvero silenzioso, sentiti libero di rimuoverlo.


Cordiali saluti: Ho <kbd> decompresso -qq 2.3.zip "magento2-2.3 / vendor / *" "vendor /" </kbd> e ho ricevuto <kbd> attenzione: nome file non corrispondente: vendor / `</kbd>. Questo è su un'installazione Ubuntu in bash. Raramente decomprimo, probabilmente ho fatto qualcos'altro ...
Chris K,
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.