descompactar vários arquivos de uma só vez

2

Eu tenho milhares de arquivos .zip em uma pasta, quero extraí-los usando o comando ou script, cada arquivo .zip para sua própria pasta. Desejo executar o processo de descompactação várias vezes. Como posso fazer isso?

    
por yarone 27.02.2017 / 17:36

3 respostas

1

Isso fará o truque, execute isso no terminal

for f in *.zip; do unzip $f -d ${f%.*}; done

Ok redefiniu a resposta levando em consideração o comentário:

Em um arquivo chamado unzip.sh, coloque este código:

#!/bin/bash
LEN=${#}
COUNT=0
PROCESSES=20
ITERATE=$(( LEN/PROCESSES ))
for ((i=0;i<=ITERATE;i++))
do 
    LOWER=$(( i*PROCESSES+1 ))
    HIGHER=$(( (i+1)*PROCESSES ))
    ./aux.sh ${@:$LOWER:$HIGHER} &!
done

Em um arquivo chamado aux.sh, coloque este código:

#!/bin/bash
for f in $@; do unzip $f -d ${f%.*}; done

Lembre-se de definir os dois arquivos com permissões de execução digitando no terminal: chmod +x unzip.sh aux.sh Agora tudo o que você precisa fazer é executar o script digitando no terminal: ./unzip.sh *.zip

    
por Diogo Vilela 27.02.2017 / 18:05
0

xargs com -P n pode ser usado para executar um programa em paralelo para vários arquivos. O seguinte, por exemplo, executa 8 instâncias de unzip em paralelo.

cd directory-with-zip-files
find . -name '*.zip' -print0 | xargs -0 -n 1 -P 8 unzip
    
por Chai T. Rex 28.02.2017 / 01:56
0

Se os arquivos dentro dos arquivos zip estiverem em suas respectivas pastas, uma solução mais fácil seria digitar isso no terminal aberto da pasta dos arquivos zip:

  

descompacte "* .zip"

    
por Nikki Mino 08.06.2017 / 04:32