¿Cómo descomprimir un archivo zip desde la Terminal?

1413

Acabo de descargar un archivo .zip de internet. Quiero usar el terminal para descomprimir el archivo. ¿Cuál es la forma correcta de hacer esto?

ubuntu-nerd
fuente
3
Extraiga todos los archivos de la carpeta actual, puede usar: descomprimir \ *. Zip
burtsevyg
2
@burtsevyg la barra invertida no es necesaria allí. Hará que Shell se trate \*como un símbolo de estrella literal. Solo use unzip *.zippara hacer que el shell se expanda *a todos los archivos que terminan en.zip
Sergiy Kolodyazhnyy
Usar *solo no funcionó para mí. Causó filename not matchederrores. \*hizo el trabajo
arman_aegit
Le recomiendo que use y aprenda "desarmar" en lugar de uno específico para zip, a menos que necesite funciones específicas. "Los formatos de archivo admitidos incluyen Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt y muchos otros formatos antiguos y oscuros".
masterxilo
Ubuntu tiene múltiples herramientas de compresión / descompresión ya instaladas. Ejecute apropos zipdesde la consola para obtener la lista completa.
Stephen W. Wright

Respuestas:

1927

Si el unzipcomando no está instalado en su sistema, ejecute:

sudo apt-get install unzip

Después de instalar la utilidad de descompresión, si desea extraer a una carpeta de destino particular, puede usar:

unzip file.zip -d destination_folder

Si los directorios de origen y destino son iguales, simplemente puede hacer:

unzip file.zip
Kelley
fuente
83
Si ya está en el directorio donde desea descomprimir el archivo, omita los argumentos segundo y tercero, es decirunzip /path/to/file.zip
Severo Raz,
2
Acabo de usar este comando. Esto es un ejemplo. Paso 1 (cambié al directorio donde está almacenado el archivo zip): cd /home/paf/Copy/Programming/Javascript/Json Paso 2 (extraigo el archivo zip en el directorio que acabo de mencionar):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
pablofiumara
2
unzipPuede ser un programa predeterminado. En otras palabras, es posible que no necesite instalarlo.
noobninja
2
@Aevi Compruebe las páginas de [-d exdir] An optional directory to which to extract files.
manual
44
Asegúrese de extraer a un directorio, a diferencia de los archivos tar, puede encontrar que muchas personas incluyen docenas de archivos en su directorio raíz de sus archivos zip, ¡esto puede ser un verdadero desastre!
Steve
230

Puedes simplemente usar unzip.

Instalarlo:

apt-get install unzip

Y úsalo:

cd /path/to/file
unzip file.zip
Pantera
fuente
117

Una herramienta más útil es la 7zque comprime y descomprime una variedad de formatos de compresión, especialmente lzmael protocolo que ofrece las tasas de compresión más altas.

Este comando instala 7z:

sudo apt-get install p7zip-full

Este comando enumera el contenido del zip:

7z l zipfile.zip

Este comando extrae el contenido del zip:

7z x zipfile.zip
Chris
fuente
55
7z eno mantiene la estructura de directorios - 7z xsí ...
assylias
2
13.10 dice que 7z no existe. Creo que debe sudo apt-get install 7zip
nitishch
66
Creo que el comando de instalación debería ser sudo apt-get install p7zipo sudo apt-get install p7zip-fullnecesita la versión completa para obtener el 7zcomando. Full también es el único que maneja zip y otros tipos de formatos de los dos.
Automatico
1
¿podría aclarar "Una herramienta más útil"? ¿Estás comparando para descomprimir? ¿Podría proporcionar algún ejemplo de características que hagan que 7z sea más útil, y quizás en qué contextos se prefiere 7z?
David LeBauer
1
Para algunos descomprimir es más útil: fácil de usar y su nombre para recordar.
Shy Robbiani
47

Puedes usar:

unzip file.zip -d somedir

extraer a yourpath/somedir

Si desea extraer a una ruta absoluta, use

sudo unzip file.zip -d /somedir
cristobalhdez
fuente
39

Uso de herramientas de secuencias de comandos: Perl y Python

Muchas respuestas aquí mencionan herramientas que requieren instalación, pero nadie ha mencionado que dos de los lenguajes de script de Ubuntu, Perl y Python, ya vienen con todos los módulos necesarios que le permiten descomprimir un archivo zip, lo que significa que no necesita instalar nada más. Simplemente use cualquiera de los dos scripts presentados a continuación para hacer el trabajo. Son bastante cortos e incluso se pueden condensar en un comando de una línea si así lo quisiéramos.

Pitón

#!/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

Ver también

Sergiy Kolodyazhnyy
fuente
1
Gracias, exactamente lo que necesito. No tengo root y no quiero instalar descomprimir manualmente desde la fuente. Esto también se puede usar con un bash one-liner que funcionará principalmente (suponiendo que no esté '''dentro del nombre del archivo):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
mxmlnkn
@mxmlnkn Me alegro de poder ayudar :)
Sergiy Kolodyazhnyy
30

Si los directorios de origen y destino son iguales, simplemente puede hacer:

unzip filename.zip
Nadeem Khan
fuente
En Ubuntu 17.04, -d requiere por razones desconocidas.
林果 皞
21

Yo prefiero bsdtara unzip/ zip. Para extraer, son bastante similares:

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

Sin embargo, para cerrar, bsdtargana. Digamos que tiene esta entrada:

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

y quiero esto en el archivo zip:

alfa/four.txt
bravo/four.txt

Esto es fácil con bsdtar:

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

zip no tiene la -dopción de descomprimir, por lo que no tiene forma de lograr lo anterior a menos que cdprimero lo haga .

Steven Penny
fuente
Por mucho que me gustaría darle el triunfo a una herramienta de foss, aparentemente bsdtarno es un buen augurio con caracteres especiales como al menos uno en la palabra Blóðstokkinncuando no están presionando. Ni siquiera lo comprobé al comprimir. Qué fastidio. : / lo unzipmanejé sin problema.
Vrakfall
20

Aquí está la descripción detallada de las opciones que encuentro útiles:

Comando: descomprimir - [opción] zip-path.
               -d un directorio opcional para extraer archivos  
               -l Lista de archivos de almacenamiento.
               -P contraseña Use la contraseña para descifrar las entradas cifradas de archivos zip (si las hay).
               -t Probar archivos de almacenamiento con verificación de redundancia cíclica.  
               -u Actualiza los archivos existentes.  
               -z comentario de archivo
kashminder
fuente
8

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

Instalar descomprimir ============= Entonces, antes que nada, necesitamos instalar descomprimir en nuestro sistema si no está instalado. El comando descomprimir se utiliza para extraer archivos de un archivo ZIP.

Ejecute el siguiente comando para instalar unzip

sudo apt-get install unzip

unzip Syntex

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

Ahora siga los pasos a continuación:

Descomprimir archivo

OPCIÓN 1 - Si el archivo Zip está en el mismo directorio / carpeta en el que se encuentra su terminal y queremos extraerlo en el directorio de trabajo actual.

Use el siguiente comando para lograr el escenario descrito anteriormente

sudo unzip zip_file_name.zip

Si el archivo zip está protegido con alguna contraseña, utilice el siguiente comando:

sudo ubzip -P zip_file_name.zip

Asegúrese de usar -P (P mayúscula) no -p porque hay diferentes opciones.

OPCIÓN 2 : si el archivo zip no está presente en el mismo directorio y queremos extraer / descomprimir el archivo en un directorio diferente.

Use el siguiente comando para lograr el escenario descrito anteriormente

sudo unzip path/filename.zip -d another_path_or_same_path

si no usamos la opción -d, el archivo se extraerá al directorio de trabajo actual.

Y si el archivo zip está protegido con contraseña, también podemos usarlo -P.

use el comando tar en Linux / Unix

tares un acrónimo de Tape Archive. El comando tar se utiliza para manipular archivos en Linux / Unix. Los administradores del sistema usan el comando tar con frecuencia para extraer un montón de archivos o directorios en un archivo altamente comprimido que se llama tarballo tar, bzipy gzipen el sistema Linux / Unix .

alquitrán Syntex

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

O

alquitrán requerido Banderas

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

Banderas de alquitrán opcionales

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]

Ejemplos

Cree un archivo de archivo tar comprimiendo un directorio o un archivo único

El siguiente comando de terminal creará un .tararchivo llamado sample_dir.tarcon un directorio /home/codebind/sample_diro sample_diren el directorio de trabajo actual.

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

ingrese la descripción de la imagen aquí

Esto es lo que esas banderas (-cvf) realmente significan

-c, --create- crea un nuevo archivo

-x, --extract, --get- extraer archivos de un archivo

-f, --file ARCHIVE- utilice el archivo o dispositivo ARCHIVO

Cree tar.gzo tgzarchive un archivo comprimiendo un directorio o un archivo único

El siguiente comando de terminal creará un .tar.gzarchivo llamado sample_dir.tar.gzcon un directorio /home/codebind/sample_diro sample_diren el directorio de trabajo actual.

Observe que hemos agregado una bandera adicional -z al comando. Esto es lo que significa realmente la bandera -z

-z, --gzip, --gunzip --ungzip- Comprime el archivo 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

ingrese la descripción de la imagen aquí

El siguiente comando creará un archivo .tgz. Uno de estos para notar es tar.gz y tgz ambos son similares.

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

Comprimir múltiples directorios o archivos a la vez

Digamos, por ejemplo, queremos comprimir el sample_dirdirectorio, el java_testdirectorio y el abc.pyarchivo en un archivo tar llamado sample_dir.tar.gz.

Ejecute el siguiente comando para lograr el objetivo anterior.

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

ingrese la descripción de la imagen aquí

Crear .bzip2archivo comprimido comprimiendo un directorio o un archivo único

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:~$ 

Observe que hemos agregado una bandera adicional -fal comando. Esto es lo que -frealmente significa la bandera

-f, --file ARCHIVE- utilice el archivo o dispositivo ARCHIVO

ingrese la descripción de la imagen aquí

Extraer .tararchivo de archivo

Podemos extraer o descomprimir el archivo comprimido usando el comando tar. El siguiente comando extraerá el contenido del sample_dir.tardirectorio actual.

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

ingrese la descripción de la imagen aquí

El siguiente comando extraerá los archivos Untar en el directorio especificado, es decir, /home/codebind/dir_nameen este 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:~$ 

hemos agregado una bandera adicional -Cal comando. Esto es lo que -C realmente significa la bandera

-C, --directory DIR - cambiar al directorio DIR

ingrese la descripción de la imagen aquí

MAK Ripon
fuente
1
Además, para verificar si zip / unzip está instalado, use zip -vy unzip -v. Si está instalado, devolverá algo como UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(además de varias líneas de información adicional. Si no está instalado, dirá algo como The program 'zip' is currently not installed. You can install it by typing: apt install zip.
SherylHohman