Tenho vários arquivos zip em um diretório principal que precisam ser reempacotados recursivamente. Esses arquivos possuem espaços, apóstrofos, sublinhados, etc.
advzip
nã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