Pesquisa de site

Comando de descompactação no Linux: 8 exemplos práticos


Tem um arquivo zip no terminal? Aprenda como usar o comando unzip no Linux com estes exemplos práticos.

Se você tiver um arquivo compactado zip, poderá descompactá-lo na linha de comando do Linux. O comando unzip no Linux é bastante versátil e você pode usá-lo para fazer muito mais do que apenas extrair um arquivo zip.

Já discuti como compactar uma pasta no Linux no passado. É hora de ver vários usos do comando unzip. Antes de fazer isso, certifique-se de que o unzip esteja instalado em seu sistema. Você pode usar o gerenciador de pacotes da sua distribuição para instalar o comando.

No Ubuntu e no Debian, você pode usar este comando:

sudo apt install unzip

Depois de verificar isso, vamos ver como usar a descompactação no terminal Linux.

Comando de descompactação no Linux

O comando unzip tem uma sintaxe muito simples:

unzip [option] zip_file

Se você usá-lo para extrair um arquivo zip sem qualquer opção, ele extrairá todos os arquivos do diretório atual:

unzip webdesign.zip 
Archive:  webdesign.zip
  inflating: 339252-PAJF05-394.ai    
  inflating: 339252-PAJF07-322.eps   
  inflating: 339252-PALBTI-224.ai    
  inflating: 339252-PALBTL-394.eps   
  inflating: 339252-PALBTM-53.jpg    
  inflating: License free.txt        
  inflating: License premium.txt

E não é isso que você deseja na maioria das vezes. Isso simplesmente inundará seu diretório atual com todos os arquivos extraídos.

ls
 339252-PAJF05-394.ai    339252-PALBTI-224.ai    339252-PALBTM-53.jpg  'License premium.txt'
 339252-PAJF07-322.eps   339252-PALBTL-394.eps  'License free.txt'      webdesign.zip

1. Descompacte em um diretório

O comportamento esperado é que você tenha os arquivos extraídos para um determinado diretório, normalmente com o mesmo nome do arquivo zip.

Você pode especificar o diretório de destino onde deseja extrair os arquivos.

unzip -d target_directory zip_file

Se o diretório de destino não existir, ele será criado. Porém, você não pode criar diretórios aninhados dessa maneira.

Observe que você também pode colocar o diretório de destino no final, mas nem todas as opções podem ser adicionadas no final.

unzip zip_file -d target_directory

2. Veja o conteúdo do arquivo zip sem extrair

Se você quiser ver o que o arquivo zip contém, nem sempre será necessário extraí-lo primeiro. Você pode usar a opção -l e ela mostrará o conteúdo do arquivo zip.

unzip -l zip_file

Como você pode ver, ele também mostra o carimbo de data/hora dos arquivos e o tamanho real dos arquivos individuais em bytes.

abhishek@linux-console:$ unzip -l webdesign.zip 
Archive:  webdesign.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   205358  2018-06-18 23:14   339252-PAJF05-394.ai
   996906  2018-06-18 23:14   339252-PAJF07-322.eps
   213968  2018-06-20 00:00   339252-PALBTI-224.ai
  1005362  2018-06-20 00:00   339252-PALBTL-394.eps
   305531  2018-06-20 00:00   339252-PALBTM-53.jpg
     1462  2018-06-20 09:45   License free.txt
     1116  2018-06-20 09:45   License premium.txt
---------                     -------
  2729703                     7 files

Se desejar, você pode obter mais informações como tamanho compactado e taxa de compactação usando o modo detalhado com a opção -v. O CRC-32 na saída é a verificação de redundância cíclica.

abhishek@linux-console:$ unzip -v webdesign.zip 
Archive:  webdesign.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
  205358  Defl:N   142097  31% 2018-06-18 23:14 792f2380  339252-PAJF05-394.ai
  996906  Defl:N   221228  78% 2018-06-18 23:14 440390d3  339252-PAJF07-322.eps
  213968  Defl:N   147568  31% 2018-06-20 00:00 cdb64dfc  339252-PALBTI-224.ai
 1005362  Defl:N   226727  77% 2018-06-20 00:00 aed3d97a  339252-PALBTL-394.eps
  305531  Defl:N   183363  40% 2018-06-20 00:00 e4ced90f  339252-PALBTM-53.jpg
    1462  Defl:N      728  50% 2018-06-20 09:45 0eb9e17b  License free.txt
    1116  Defl:N      558  50% 2018-06-20 09:45 165dd84e  License premium.txt
--------          -------  ---                            -------
 2729703           922269  66%                            7 files

3. Substitua todos os arquivos sem avisar

Se já existirem arquivos com o mesmo nome no diretório onde você está extraindo os arquivos, você será promovido para cada um desses arquivos. Você pode forçar a substituição de todos os arquivos com a opção -o.

unzip -o -d target_directory zip_file

4. Não sobrescreva nenhum arquivo -n

Se você não deseja que nenhum arquivo existente seja substituído por arquivos recém-extraídos, use a opção -n (significa nunca substituir).

unzip -n -d target_directory zip_file

5. Atualize arquivos e crie se necessário

Isso é um pouco diferente de substituir todos os arquivos. Nesse caso, apenas serão substituídos os arquivos que possuem carimbo de data/hora mais recente que os arquivos existentes. Se um arquivo não existir, ele será criado.

Você pode conseguir isso com a opção -u:

unzip -u -d target_directory zip_file

6. Atualize os arquivos existentes, mas não crie nenhum

Ligeira mudança em relação ao exemplo anterior aqui. Neste, ele atualizará os arquivos existentes se eles tiverem carimbo de data/hora mais antigo, mas não criará nenhum arquivo novo, mesmo que eles não existam.

A opção -f permite que você faça isso:

unzip -f -d target_directory zip_file

7. Extraia no modo silencioso

Ao descompactar um arquivo, todos os arquivos que foram extraídos são exibidos no display. Agora imagine um arquivo zip que contém centenas de arquivos. Se você extraí-lo, sua tela ficará confusa com a saída.

Você pode usar o modo silencioso com a opção -q e não verá nada no display:

unzip -q -d target_directory zip_file

8. Exclua arquivos da extração

Você também pode excluir a extração de determinados arquivos ou determinados tipos de arquivos.

unzip zip_file -x file_to_exclude

No meu exemplo, digamos que eu não queira extrair nenhum arquivo .eps.

abhishek@linux-console:$ unzip webdesign.zip -x *.eps
Archive:  webdesign.zip
  inflating: 339252-PAJF05-394.ai    
  inflating: 339252-PALBTI-224.ai    
  inflating: 339252-PALBTM-53.jpg   
  inflating: License free.txt        
  inflating: License premium.txt

Esses foram alguns dos exemplos mais comuns do comando unzip no Linux. Você sempre pode verificar sua página de manual para aprender sobre mais opções.

Você usa alguma outra opção de descompactação com frequência? Por que não compartilhar conosco nos comentários?

Artigos relacionados: