descompactar os arquivos .zip aninhados pelo script de shell de nome

3

Estou baixando um arquivo zip que tem uma estrutura aninhada muito profunda da qual eu só preciso escolher alguns arquivos. A estrutura do arquivo é assim:

myfile.zip/
C*_01.zip, ....., C*_xx.zip/

Em cada arquivo C * _xx.zip:

a*.zip
b*.zip
..../
file1.txt
file2.txt
...
targetfile.txt
...

Por favor, note que em cada "C * .zip" eu preciso escolher o arquivo de destino.

Eu não tenho muita experiência com shell scripts, então escrevi um script baseado em outras soluções, mas não funciona. Eu apreciaria qualquer dica:

wget url | find . -name "myfile.zip" | while ["'find -type f -name 'C*.zip' | wc -l'" -gt 0 ]; do find -type f -name "b.zip" | find -type f -name "targetfile.txt" exec unzip -- '{}' \;; done
    
por nopeva 21.02.2017 / 15:46

1 resposta

2

Crie um arquivo de script como fetchtarget.sh e inicie-o com a URL como primeiro argumento.

#!/bin/sh

dir=$(mktemp -d)
cd $dir || exit

wget $1

# deep unzip loop
while true; do
   find -iname '*.zip' > zipindex
   test -s zipindex || break
   for zip in $(cat zipindex); do unzip -o $zip && rm $zip; done
done

# purge and show result
find $dir -name targetfile.txt -print -or -type f -exec rm {} \; 
    
por 23.02.2017 / 11:11