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.