Come decomprimere un file zip dal terminale?


1413

Ho appena scaricato un file .zip da Internet. Voglio usare il terminale per decomprimere il file. Qual è il modo corretto per farlo?


3
Estrarre tutti i file dalla cartella corrente, è possibile utilizzare: decomprimere \ *. Zip
— burtsevyg

2
@burtsevyg la barra rovesciata non è necessaria lì. Farà trattare la conchiglia \*come un letterale simbolo a stella. Basta usare unzip *.zipper espandere la shell *a tutti i file che terminano in.zip
— Sergiy Kolodyazhnyy il

Usare da *solo non ha funzionato per me. Ha causato filename not matchederrori. \*fatto il lavoro.
— arman_aegit,

Ti consiglio di usare e imparare "unar" invece di uno zip specifico, a meno che tu non abbia bisogno di funzionalità specifiche. "I formati di file supportati includono Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt e molti altri formati vecchi e oscuri.".
— masterxilo,

Ubuntu ha già installati più strumenti di compressione / decompressione. Esegui apropos zipdalla console per l'elenco completo.
— Stephen W. Wright,

Risposte:


1927

Se il unzipcomando non è già installato sul tuo sistema, esegui:

sudo apt-get install unzip

Dopo aver installato l'utilità di decompressione, se si desidera estrarre in una cartella di destinazione particolare, è possibile utilizzare:

unzip file.zip -d destination_folder

Se le directory di origine e di destinazione sono uguali, puoi semplicemente fare:

unzip file.zip

83
Se sei già nella directory in cui desideri decomprimere il file, ometti il ​​2 ° e il 3 ° argomento, ovverounzip /path/to/file.zip
— Severo Raz,

2
Ho appena usato questo comando. Questo è un esempio Passaggio 1 (sono passato alla directory in cui è archiviato il file zip): Passaggio cd /home/paf/Copy/Programming/Javascript/Json 2 (estraggo il file zip nella directory che ho appena menzionato):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
— pablofiumara,

2
unzippotrebbe essere un programma predefinito. In altre parole, potrebbe non essere necessario installarlo.
— noobninja,

2
@Aevi Controlla le pagine man[-d exdir] An optional directory to which to extract files.
— WAKR l'

4
Assicurati di estrarre in una directory, a differenza degli archivi tar, potresti trovare molte persone che includono dozzine di file nella loro directory principale dei loro file zip, questo può creare un vero casino !!!
— Steve,

230

Puoi semplicemente usare unzip.

Installalo:

apt-get install unzip

E usalo:

cd /path/to/file
unzip file.zip

117

Uno strumento più utile è 7z, che comprime e decomprime una serie di formati di compressione, in particolare lzmail protocollo che offre i più alti tassi di compressione.

Questo comando installa 7z:

sudo apt-get install p7zip-full

Questo comando elenca i contenuti della zip:

7z l zipfile.zip

Questo comando estrae il contenuto della zip:

7z x zipfile.zip

5
7z enon mantiene la struttura delle directory - 7z xfa ...
— assylias

2
13.10 afferma che 7z non esiste. Penso che debba sudo apt-get install 7zip
— nitishch il

6
Penso che il comando di installazione dovrebbe essere sudo apt-get install p7zipo sudo apt-get install p7zip-fullÈ necessaria la versione completa per ottenere il 7zcomando. Il full è anche l'unico che gestisce zip e altri tipi di formati tra i due.
— Automatico,

1
potresti chiarire "Uno strumento più utile"? Stai confrontando per decomprimere? Potresti fornire qualche esempio di funzionalità che rende 7z più utile e forse in quali contesti 7z è preferito?
— David LeBauer,

1
Per alcuni decomprimere è più utile: facile da usare e il suo nome da ricordare.
— Timido Robbiani,

47

Puoi usare:

unzip file.zip -d somedir

per estrarre a yourpath/somedir

Se si desidera estrarre in un percorso assoluto, utilizzare

sudo unzip file.zip -d /somedir

39

Utilizzo degli strumenti di scripting: Perl e Python

Molte risposte qui menzionano strumenti che richiedono l'installazione, ma nessuno ha mai detto che due dei linguaggi di scripting di Ubuntu, Perl e Python, sono già dotati di tutti i moduli necessari che consentono di decomprimere un archivio zip, il che significa che non è necessario installare nulla altro. Basta usare uno dei due script presentati di seguito per fare il lavoro. Sono abbastanza corti e possono anche essere condensati in un comando one-liner se volessimo.

Pitone

#!/usr/bin/env python3
import sys
from zipfile import PyZipFile
for zip_file in sys.argv[1:]:
    pzf = PyZipFile(zip_file)
    pzf.extractall()

Uso:

./pyunzip.py master.zip 

o

python3 pyunzip.py master.zip

Perl

#!/usr/bin/env perl
use Archive::Extract;
foreach my $filepath (@ARGV){
    my $archive = Archive::Extract->new( archive => $filepath );
    $archive->extract;
}

Uso:

./perlunzip master.zip

o

perl perlunzip.pl master.zip

Guarda anche


1
Grazie, esattamente quello di cui ho bisogno. Non ho root e non voglio installare decomprimere manualmente dalla fonte. Questo può anche essere usato con un bash one-liner che per lo più funzionerà (supponendo che non ci sia '''all'interno del nome del file):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
— mxmlnkn

@mxmlnkn Sono contento di poterti aiutare :)
— Sergiy Kolodyazhnyy l'

30

Se le directory di origine e di destinazione sono uguali, puoi semplicemente fare:

unzip filename.zip

Su Ubuntu 17.04, -d richiede un motivo sconosciuto.
— 林果 皞

21

Io preferisco bsdtara unzip/ zip. Per l'estrazione, sono abbastanza simili:

bsdtar -x -f /one/two/three/four.zip -C /five
unzip /one/two/three/four.zip -d /five

Tuttavia, per zippare, bsdtarvince. Supponi di avere questo input:

/one/two/three/alfa/four.txt
/one/two/three/bravo/four.txt

e vuoi questo nel file zip:

alfa/four.txt
bravo/four.txt

Questo è facile con bsdtar:

bsdtar -a -c -f four.zip -C /one/two/three alfa bravo

zip non ha l' -dopzione come decomprimere, quindi non hai modo di ottenere quanto sopra se non cdprima.


Per quanto mi piacerebbe dare la vittoria a uno strumento fossile, a quanto pare bsdtarnon promette nulla di buono con personaggi speciali come almeno uno nella parola Blóðstokkinnquando non decomprime. Non ho nemmeno controllato durante la compressione. Che peccato. : / unzipgestito senza problemi.
— Vrakfall

20

Ecco la descrizione dettagliata delle opzioni che trovo utili:

Comando: unzip - [opzione] zip-path.
               -d una directory opzionale in cui estrarre i file  
               -l Elenca i file di archivio.
               -P password Utilizzare la password per decrittografare le voci cifrate del file zip (se presenti).
               -t Test dei file di archivio con controllo di ridondanza ciclico.  
               -u Aggiorna i file esistenti.  
               -z commento sull'archivio

8

http://www.codebind.com/linux-tutorials/unzip-zip-file-using-terminal-linux-ubuntu-linux-mint-debian/ :

Installa unzip ============= Quindi, prima di tutto dobbiamo installare decomprimere sul nostro sistema se non è installato. Il comando unzip viene utilizzato per estrarre i file da un archivio ZIP.

Eseguire il comando seguente per installare unzip

sudo apt-get install unzip

unzip Syntex

$ unzip [-aCcfjLlnopqtuvy] [-d dir] zipfile

Ora segui i passaggi seguenti:

Decomprimi file

OPZIONE 1 - Se il file zip si trova nella stessa directory / cartella in cui si trova il tuo terminale e vogliamo estrarlo nella directory di lavoro attuale.

Utilizzare il comando seguente per ottenere lo scenario sopra descritto

sudo unzip zip_file_name.zip

se il file zip è protetto con una password, utilizzare il seguente comando:

sudo ubzip -P zip_file_name.zip

Assicurati di usare -P (P maiuscola) non -p perché ci sono diverse opzioni.

OPZIONE 2 - Se il file zip non è presente nella stessa directory e vogliamo estrarre / decomprimere il file in un'altra directory.

Utilizzare il comando seguente per ottenere lo scenario sopra descritto

sudo unzip path/filename.zip -d another_path_or_same_path

se non utilizziamo l'opzione -d il file verrà estratto per presentare la directory di lavoro.

E se il file zip è protetto da password possiamo anche usare -P.

usa il comando tar in Linux / Unix

tarè l'acronimo di Tape Archive. Il comando tar è usato per manipolare gli archivi in ​​Linux / Unix. Gli amministratori di sistema usano frequentemente il comando tar per estrarre un mucchio di file o directory in un archivio altamente compresso chiamato tarballo tar, bzipe gzipnel sistema Linux / Unix .

tar Syntex

tar [OPTION...] [FILE]...

O

tar richiesto Bandiere

tar {-r|-t|-c|-x|-u}

bandiere opzionali tar

tar {one of the required Flags} [ -d ][-B] [ -F ] [ -E ] [ -i ] [-h ] [ -l ] [ -m ] [ -o ] [ -p ] [ -w] [ -s ] [ -U ] [ -v ]
[-Number] [-b Blocks] [-f Archive]

Esempi

Crea tar Archive File comprimendo una directory o un singolo file

Il seguente comando del terminale creerà un .tarfile chiamato sample_dir.tarcon una directory /home/codebind/sample_diro sample_dirnella directory di lavoro attuale.

ripon@ripon:~$  tar -cvf sample_dir.tar sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar

inserisci qui la descrizione dell'immagine

Ecco cosa significano quelle bandiere (-cvf)

-c, --create- crea un nuovo archivio

-x, --extract, --get- estrae i file da un archivio

-f, --file ARCHIVE- usa il file di archivio o l'ARCHIVIO del dispositivo

Crea tar.gzo tgzarchivia file comprimendo una directory o un singolo file

Il seguente comando del terminale creerà un .tar.gzfile chiamato sample_dir.tar.gzcon una directory /home/codebind/sample_diro sample_dirnella directory di lavoro attuale.

Nota che abbiamo aggiunto flag -z in più al comando. Ecco cosa significa in realtà il flag -z

-z, --gzip, --gunzip --ungzip- Comprime l'archivio con gzip

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar.gz

inserisci qui la descrizione dell'immagine

Il comando seguente creerà un file .tgz. Uno da notare è che tar.gz e tgz sono entrambi simili.

ripon@ripon:~$ tar -cvzf sample_dir.tgz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tgz

Comprimere più directory o file contemporaneamente

Diciamo, ad esempio, vogliamo comprimere la sample_dirdirectory, la java_testdirectory e il abc.pyfile in un file tar chiamato sample_dir.tar.gz.

Esegui il comando seguente per raggiungere l'obiettivo sopra.

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dir java_test abc.py
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
java_test/
java_test/HelloCV.java
abc.py
ripon@ripon:~$ ls
sample_dir java_test abc.py sample_dir.tar.gz

inserisci qui la descrizione dell'immagine

Crea .bzip2file di archivio comprimendo una directory o un singolo file

ripon@ripon:~$ tar -cjvf sample_dir.tar.bz2 sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

Si noti che -fal comando è stato aggiunto un flag extra: ecco cosa -fsignifica effettivamente il flag

-f, --file ARCHIVE- usa il file di archivio o l'ARCHIVIO del dispositivo

inserisci qui la descrizione dell'immagine

Estrai il .tarfile di archivio

Possiamo estrarre o decomprimere il file compresso usando il comando tar. Il comando seguente estrarrà il contenuto della sample_dir.tarpresente directory.

ripon@ripon:~$ tar -xvf sample_dir.tar
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

inserisci qui la descrizione dell'immagine

Il comando seguente estrae o annulla i file nella directory specificata, ad esempio /home/codebind/dir_namein questo caso.

ripon@ripon:~$ tar -xvf sample_dir.tar -C /home/codebind/dir_name
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

abbiamo aggiunto un flag extra -Cal comando. Ecco cosa -C significa effettivamente il flag

-C, --directory DIR - passa alla directory DIR

inserisci qui la descrizione dell'immagine


1
Inoltre, per verificare se sono installati zip / unzip, utilizzare zip -ve unzip -v. Se installato restituirà qualcosa di simile UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(più diverse righe di informazioni aggiuntive. Se non installato, dirà qualcosa di simile The program 'zip' is currently not installed. You can install it by typing: apt install zip.
— SherylHohman
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.