Cómo recomprimir varios archivos zip

Cómo recomprimir varios archivos zip

Tengo varios archivos zip en un directorio principal que deben volver a empaquetarse de forma recursiva. Estos archivos tienen espacios, apóstrofes, guiones bajos, etc.

advzipno funciona porque se queja de un método de compresión no compatible (una razón por la que es necesario volver a empaquetarlos). Todos estos archivos se descomprimen, solo es necesario volver a comprimirlos/comprimirlos con cierta automatización, ya que hay miles.

Los archivos se crearon originalmente en Windows usando MP3+G Toolz para una biblioteca de karaoke.

SO: Linux Mint 18
Escritura de guiones: principiante

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

Arriba está lo que estoy buscando, en su mayor parte. Pero como no soy bueno con los scripts, tampoco estoy seguro de cómo hacerlo para todos los zip en los subdirectorios. Ejemplo de un nombre de archivo:

SC0000-01 - Someone - Something.zip

Los archivos en el zip son

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

Respuesta1

Cuando menciono advzip, asumo que usas Linux. Aquí puedes escribir un script simple que recorra cada archivo.

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

Espero que esto ayude; de ​​lo contrario, se recomendaría proporcionar más detalles.

Respuesta2

A menos que haya hecho esto más complicado de lo necesario:

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

información relacionada