Descompacte todos os arquivos zip em uma pasta de destino?

1

Eu tenho um cronjob curl que periodicamente baixa um monte de arquivos zip em uma pasta de destino. Assim:

curl www.zipdownloadfile.com/file.zip > file.zip

Agora eu preciso que o Ubuntu descompacte todos os arquivos zip nessa pasta de destino.

Qual é o comando adequado que descompactará todos os arquivos em um destino / pasta de destino?

Obrigado

    
por jc.yin 04.01.2014 / 13:33

2 respostas

1

é seu comando man, isso descompactará todo o arquivo zip em um arquivo de destino

find /path-to-folder -name '*.zip' -exec unzip -d destination_folder {} +

Apenas tente.

    
por nux 04.01.2014 / 15:29
0

O problema aqui é que unzip *.zip não funciona por algum motivo. Eu acho que o unzip não aceita argumentos de caminho curinga para arquivos.

A resposta do Nux é boa, mas eu uso uma versão um pouco diferente do comando find. Se você digitar na pasta que você baixou todos os arquivos zip, você pode simplesmente executar:

find . -type f -name "*.zip" -exec unzip {} \;

Isso pesquisará o diretório de trabalho atual e todos os subdiretórios recursivamente com . , localizará apenas os arquivos, -type f e, em seguida, procurará por qualquer coisa chamada * .zip with -name and it will execute unzip exec unzip and substitute the result of the search which is the full file name and place it with {}%código%\;' é apenas uma sintaxe mágica para dizer 'eu terminei o comando está terminado'.

Isso ainda funcionou para mim no Ubuntu 16.04 para descompactar todos os arquivos no diretório atual depois de baixar um número enorme.

Um comando similar também pode ser usado para unrar um conjunto de arquivos rar que você baixou simultaneamente:

after the unzip command as the argument.

O comando mágico acima pesquisará todos os arquivos no diretório atual e todas as pastas e arquivos recursivamente em subdiretórios para localizar todos os arquivos que terminam em find . -type f -name "*.rar" -exec unrar x -e {} \; e, em seguida, os unirá diretamente no diretório de trabalho atual.

Digamos que você queira descompactar um monte de coisas que você acabou de baixar recentemente:

Fri Nov 17 10:56 AM Downloads: tree .
.
├── download1
│   ├── show01.r00
│   ├── show01.r01
│   ├── show01.r02
│   └── show01.rar
├── download2
│   ├── movie01.r00
│   ├── movie01.r01
│   ├── movie01.r02
│   ├── movie01.r03
│   └── movie01.rar
└── download3
    ├── program01.r00
    ├── program01.r01
    ├── program01.r02
    ├── program01.r03
    └── program01.rar

3 directories, 14 files

Este é apenas um pequeno exemplo que você pode ter 20 ou até mesmo 40 dobrados diferentes, cada um contendo seu próprio arquivo master .zip ou .rar que precisa ser unrar'd. Fazer um CD em cada diretório de download individual para usar 'unrar' é demorado e desperdício. Apenas use o comando find!

sudo apt-get install unzip
sudo apt-get install unrar
cd ~/Downloads
find . -type f -name "*.rar" -exec unrar x -e {} \;
find . -type f -name "*.zip" -exec unzip {} \;
    
por anon58192932 17.11.2017 / 19:52