Como descompactar um arquivo zip do Terminal?

1413

Acabei de baixar um arquivo .zip da internet. Eu quero usar o terminal para descompactar o arquivo. Qual é a maneira correta de fazer isso?

ubuntu-nerd
fonte
3
Extraia todos os arquivos da pasta atual, você pode usar: descompacte \ *. Zip
burtsevyg
2
@burtsevyg a barra invertida não é necessária lá. Isso fará com que o shell seja tratado \*como símbolo literal de estrela. Basta usar unzip *.zippara fazer shell expandir *a todos os arquivos que terminam em.zip
Sergiy Kolodyazhnyy
Usar *sozinho não funcionou para mim. Isso causou filename not matchederros. \*fez o trabalho.
Arman_aegit 04/12/19
Eu recomendo que você use e aprenda "desar" em vez de um zip específico, a menos que você precise de recursos específicos. "Os formatos de arquivo suportados incluem Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt e muitos outros formatos antigos e obscuros.".
Masterdilo # 8/18
O Ubuntu possui várias ferramentas de compactação / descompactação já instaladas. Execute a apropos zippartir do console para obter a lista completa.
Stephen W. Wright

Respostas:

1927

Se o unzipcomando ainda não estiver instalado no seu sistema, execute:

sudo apt-get install unzip

Após instalar o utilitário descompactar, se você deseja extrair para uma pasta de destino específica, poderá usar:

unzip file.zip -d destination_folder

Se os diretórios de origem e destino forem os mesmos, você pode simplesmente:

unzip file.zip
Kelley
fonte
83
Se você já está no diretório que você deseja que o arquivo descompactado, omitir a 2ª e 3ª argumentos, isto éunzip /path/to/file.zip
Severo Raz
2
Acabei de usar este comando. Isto é um exemplo. Passo 1 (eu mudei para o diretório onde o arquivo zip é armazenado): cd /home/paf/Copy/Programming/Javascript/Json Passo 2 (I extrair o arquivo zip no diretório acabo de referir):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
pablofiumara
2
unzippode ser um programa padrão. Em outras palavras, talvez você não precise instalá-lo.
Noobninja 31/05
2
@Aevi Verifique as páginas de [-d exdir] An optional directory to which to extract files.
manual
4
Certifique-se de extrair para um diretório, ao contrário dos arquivos tar, você pode encontrar muitas pessoas que incluem dezenas de arquivos no diretório raiz dos arquivos zip, isso pode causar uma verdadeira bagunça !!!
Steve
230

Você pode simplesmente usar unzip.

Instale-o:

apt-get install unzip

E use-o:

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

Uma ferramenta mais útil é 7z, que fecha e descompacta uma variedade de formatos de compactação, principalmente lzmao protocolo que oferece as maiores taxas de compactação.

Este comando instala 7z:

sudo apt-get install p7zip-full

Este comando lista o conteúdo do zip:

7z l zipfile.zip

Este comando extrai o conteúdo do zip:

7z x zipfile.zip
Chris
fonte
5
7z enão manter a estrutura de diretórios - 7z xfaz ...
assylias
2
13.10 diz que 7z não existe. Eu acho que deve sudo apt-get install 7zip
nitishch
6
Eu acho que o comando de instalação deve ser sudo apt-get install p7zipou sudo apt-get install p7zip-fullVocê precisa da versão completa para obter o 7zcomando. O total também é o único que lida com zip e outros tipos de formatos dentre os dois.
Automatico
1
você poderia esclarecer "Uma ferramenta mais útil"? Você está comparando com descompactar? Você poderia fornecer exemplos de recursos que tornam o 7z mais útil e, talvez, em quais contextos o 7z é preferido?
David LeBauer 29/09/2015
1
Para alguns, descompacte é mais útil: fácil de usar e seu nome para lembrar.
22616 Shy Robbiani
47

Você pode usar:

unzip file.zip -d somedir

extrair para yourpath/somedir

Se você deseja extrair para um caminho absoluto, use

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

Usando ferramentas de script: Perl e Python

Muitas respostas aqui mencionam ferramentas que requerem instalação, mas ninguém mencionou que duas das linguagens de script do Ubuntu, Perl e Python, já vêm com todos os módulos necessários que permitem descompactar um arquivo zip, o que significa que você não precisa instalar nada outro. Basta usar um dos dois scripts apresentados abaixo para fazer o trabalho. Eles são bastante curtos e podem até ser condensados ​​em um comando de uma linha, se quisermos.

Pitão

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

ou

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

ou

perl perlunzip.pl master.zip

Veja também

Sergiy Kolodyazhnyy
fonte
1
Obrigado, exatamente o que eu preciso. Eu não tenho root e não quero instalar manualmente o descompacte da fonte. Isso também pode ser usado com um bash one-liner que funcionará principalmente (assumindo que não esteja '''dentro do nome do arquivo):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
mxmlnkn
@mxmlnkn Ainda bem que pude ajudar :)
Sergiy Kolodyazhnyy
30

Se os diretórios de origem e destino forem os mesmos, você pode simplesmente:

unzip filename.zip
Nadeem Khan
fonte
No Ubuntu 17.04, -d exige por motivo desconhecido.
林果皞
21

Eu prefiro bsdtara unzip/ zip. Para extrair, eles são bem parecidos:

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

No entanto, para fechar, bsdtarganha. Digamos que você tenha esta entrada:

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

e quer isso no arquivo zip:

alfa/four.txt
bravo/four.txt

Isso é fácil com bsdtar:

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

O zip não tem a -dopção de descompactar, portanto, você não tem como conseguir o que foi mencionado acima, a menos que cdprimeiro.

Steven Penny
fonte
Por mais que eu gostaria de dar a vitória a uma ferramenta foss, aparentemente bsdtarnão é um bom Blóðstokkinnsinal para caracteres especiais como pelo menos um na palavra ao descomprimir. Eu nem chequei ao comprimir. Que chatice. : / unziplidei com isso sem problemas.
Vrakfall
20

Aqui está a descrição detalhada das opções que considero úteis:

Comando: descompacte - [opção] zip-path.
               -d um diretório opcional para o qual extrair arquivos  
               -l Listar arquivos compactados.
               -P senha Use a senha para descriptografar as entradas do arquivo zip criptografado (se houver).
               -t Teste arquivos compactados com verificação de redundância cíclica.  
               -u Atualize os arquivos existentes.  
               -z comentário do arquivo
kashminder
fonte
8

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

Instale o descompactação ============= Então, primeiro precisamos instalar o descompactação no nosso sistema, se ele não estiver instalado. O comando descompactar é usado para extrair arquivos de um arquivo ZIP.

Execute o seguinte comando para instalar unzip

sudo apt-get install unzip

unzip Syntex

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

Agora siga os passos abaixo:

Descompactar arquivo

OPÇÃO 1 - Se o arquivo zip estiver no mesmo diretório / pasta em que o seu terminal está e queremos extraí-lo no atual diretório de trabalho.

Use o seguinte comando para alcançar o cenário descrito acima

sudo unzip zip_file_name.zip

se o arquivo zip estiver protegido com alguma senha, use o seguinte comando:

sudo ubzip -P zip_file_name.zip

Certifique-se de usar -P (maiúscula P) e não -p, pois são opções diferentes.

OPÇÃO 2 - Se o arquivo zip não estiver presente no mesmo diretório e queremos extrair / descompactar o arquivo em um diretório diferente.

Use o seguinte comando para alcançar o cenário descrito acima

sudo unzip path/filename.zip -d another_path_or_same_path

se não usarmos a opção -d, o arquivo será extraído para apresentar o diretório de trabalho.

E se o arquivo zip estiver protegido por senha, também podemos usá-lo -P.

use o comando tar no Linux / Unix

taré um acrônimo para Tape Archive. O comando tar é usado para manipular arquivos no Linux / Unix. Os administradores de sistema usam o comando tar frequentemente para converter vários arquivos ou diretórios em um arquivo altamente compactado chamado tarballou tar, bzipe gzipno sistema Linux / Unix .

alcatrão Syntex

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

Ou

alcatrão necessário

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

Bandeiras opcionais do alcatrão

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]

Exemplos

Crie um arquivo tar compactando um diretório ou um único arquivo

O comando terminal abaixo criará um .tararquivo chamado sample_dir.tarcom um diretório /home/codebind/sample_dirou sample_dirno diretório de trabalho atual.

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

insira a descrição da imagem aqui

Aqui está o que esses sinalizadores (-cvf) realmente significam

-c, --create- crie um novo arquivo

-x, --extract, --get- extrair arquivos de um arquivo

-f, --file ARCHIVE- usar arquivo ou dispositivo de arquivo ARQUIVO

Criar tar.gzou tgzarquivar arquivos compactando um diretório ou um único arquivo

O comando terminal abaixo criará um .tar.gzarquivo chamado sample_dir.tar.gzcom um diretório /home/codebind/sample_dirou sample_dirno diretório de trabalho atual.

Observe que adicionamos sinalizador -z extra ao comando. Aqui está o que o sinalizador -z realmente significa

-z, --gzip, --gunzip --ungzip- Comprima o arquivo com 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

insira a descrição da imagem aqui

O comando abaixo criará um arquivo .tgz. Um deles a ser observado é tar.gz e tgz, ambos são semelhantes.

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

Compactando vários diretórios ou arquivos de uma só vez

Digamos, por exemplo, queremos compactar o sample_dirdiretório, o java_testdiretório e o abc.pyarquivo para um arquivo tar chamado sample_dir.tar.gz.

Execute o seguinte comando para atingir a meta acima.

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

insira a descrição da imagem aqui

Criar .bzip2arquivo compactando um diretório ou um único arquivo

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 adicionamos sinalizador extra -fao comando. Aqui está o que o sinalizador -frealmente significa

-f, --file ARCHIVE- usar arquivo ou dispositivo de arquivo ARQUIVO

insira a descrição da imagem aqui

Extrair .tararquivo morto

Podemos extrair ou descompactar o arquivo compactado usando o comando tar. O comando abaixo extrairá o conteúdo de sample_dir.tarpara o diretório atual.

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

insira a descrição da imagem aqui

O comando a seguir irá extrair ou descompactar arquivos no diretório especificado, ou seja /home/codebind/dir_name, neste 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:~$ 

adicionamos sinalizador extra -Cao comando. Aqui está o que o sinalizador -C realmente significa

-C, --directory DIR - mude para o diretório DIR

insira a descrição da imagem aqui

MAK Ripon
fonte
1
Além disso, para verificar se o zip / unzip está instalado, use zip -ve unzip -v. Se instalado, ele irá retornar algo como UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(além de várias linhas de informações adicionais Se não for instalado, ele vai dizer algo como. The program 'zip' is currently not installed. You can install it by typing: apt install zip.
SherylHohman