Descompacte vários arquivos em um determinado diretório

1

Em suma, não tenho certeza do que estou fazendo de errado, mas basicamente o que eu quero fazer é fazer um loop sobre todos os arquivos zip e descompactar o conteúdo deles para um diretório com o nome do zip.

exemplo:

Arquivos: a.zip , b.zip

Comando

for i in 'ls *.zip'; do unzip $i -d  'echo $i | cut -f1 -d'.'' ; done

esperado:

Pasta a com conteúdo de a.zip pasta b com conteúdo de b.zip

O que está acontecendo:

No zipfiles found. unzip: cannot find or open a.zip, a.zip.zip or a.zip.ZIP.

Alguma dica sobre o que poderia estar errado?

    
por thclpr 28.04.2015 / 13:21

3 respostas

1

Sugiro usar find sem analisar a saída de ls ou de find para evitar alguns problemas essencialmente relacionados com caracteres especiais eventualmente presentes no nome do arquivo .

 find . -name "*.zip" -exec bash -c ' unzip "$0" -d "${0%*.zip}"  '  {} \;
    
por 28.04.2015 / 15:01
1

Isso deve funcionar:

for i in *.zip; do
newdir="${i:0:-4}" && mkdir "$newdir"
unzip "$i" -d  "$newdir"
done
    
por 28.04.2015 / 14:46
-1

Use isto:

for i in 'find | grep .zip$';do unzip $i;done

EDITAR

A resposta anterior está errada (;

for i in 'find | grep .zip$ | sed '[email protected]$@@'';do mkdir $i;unzip $i.zip -d $i;done

Tente este aqui!

    
por 28.04.2015 / 13:23

Tags