Descompactar o arquivo da URL para o disco rígido?

4

Como descompactar diretamente do terminal se eu tiver o URL do arquivo?

Por exemplo:

unzip www.test.com/test.zip destination-folder-on-my-pc
    
por Ivan 28.07.2015 / 05:50

2 respostas

10

Se unzip tivesse aderido ao estilo de arquitetura de canos e filtros do Unix, seria de se esperar poder fazer isso canalizando a saída do wget para a entrada do unzip:

wget -O - http://www.test.com/test.zip | (cd destination-folder && unzip -)

Quando o traço após -O significa saída padrão, o traço após unzip significa entrada padrão e o lado direito com parênteses inicia um subshell no diretório correto.

No entanto, o formato ZIP armazena seu índice de conteúdo no final do arquivo, e unzip precisa ler isso antes de começar a descompactar. Portanto, ao contrário de gzip et al, ele não pode descompactar um fluxo em uma passagem.

Como solução alternativa, você precisa de um arquivo temporário:

wget -O /tmp/z.$$ http://www.test.com/test.zip && 
   (cd destination-folder && unzip /tmp/z.$$)

Onde o $$ é usado apenas para gerar um número que não colide.

Em vez de executar o subshell, você pode usar a opção -d de descompactar. E para maior higiene, limpe o seu arquivo temporário:

wget -O /tmp/z.$$ http://www.test.com/test.zip && 
   unzip -d destination-folder /tmp/z.$$ &&
   rm /tmp/z.$$
    
por zwets 28.07.2015 / 12:27
7

Você precisa de mais de um passo:

  1. Entre na sua pasta de destino

    cd destination
    
  2. Faça o download do arquivo

    wget www.test.com/test.zip
    
  3. Extraia o arquivo

    unzip test.zip
    

Para usar apenas um comando, use um script:

#!/bin/bash
wget -P "/tmp" ""
filename=$(awk -F'/' {print $NF})
unzip "$filename" -d ""
rm "/tmp/$filename"
  • Abra um editor para criar um novo arquivo chamado unzip_by_url e coloque-o em ~/bin ou /usr/bin/local

    nano unzip_by_url
    
  • e cole o código acima.

  • Salvar e fechar e

  • Torne o arquivo executável

    chmod +x /path/to/file/unzip_by_url
    
  • Agora inicie o script com:

    unzip_by_url www.test.com/test.zip destination-folder-on-my-pc
    
por A.B. 28.07.2015 / 06:54