Como reembalar vários arquivos zip

Como reembalar vários arquivos zip

Tenho vários arquivos zip em um diretório principal que precisam ser reempacotados recursivamente. Esses arquivos possuem espaços, apóstrofos, sublinhados, etc.

advzipnão funciona porque reclama de um método de compactação não suportado (um motivo pelo qual eles precisam ser reembalados). Todos esses arquivos são descompactados, eles só precisam ser compactados/recompactados com alguma automação, pois são milhares.

Os arquivos foram originalmente criados no Windows usando MP3+G Toolz para uma biblioteca de karaokê.

SO: Linux Mint 18
Escrita de script: iniciante

for file in *.zip
do
 unzip -j "$file"
 rm -f "$file"
 zip -mq "$file" *.mp3 *.cdg *.MP3 *.CDG *.Mp3 *.Cdg
 rm -f *.mp3 *.cdg *.MP3 *.CDG *.Mp3 *.Cdg
done

Acima está o que procuro, na maior parte. Mas como não sou bom com scripts, não tenho certeza de como fazê-lo para todos os zips em subdiretórios também. Exemplo de nome de arquivo:

SC0000-01 - Someone - Something.zip

arquivos no zip são

SC0000-01 - Someone - Something.cdg
SC0000-01 - Someone - Something.mp3

Responder1

ao mencionar o advzip, presumo que você use Linux. Aqui você pode escrever um script simples que faça um loop em cada arquivo

for f in *; 
 do; 
 unzip $f; 
done

espero que isso ajude, caso contrário, seria aconselhável fornecer mais detalhes.

Responder2

A menos que eu tenha tornado isso mais complicado do que o necessário:

find . -name "*.zip" -print0 | while read -d $'\0' file
do
 unzip -j "$file"
 rm -f "$file"
 zip -mq "$file" *.mp3 *.cdg *.MP3 *.CDG *.Mp3 *.Cdg
 rm -f *.mp3 *.cdg *.MP3 *.CDG *.Mp3 *.Cdg
done

informação relacionada