So packen Sie mehrere ZIP-Dateien neu

So packen Sie mehrere ZIP-Dateien neu

Ich habe mehrere Zip-Dateien in einem Hauptverzeichnis, die rekursiv neu gepackt werden müssen. Diese Dateien enthalten Leerzeichen, Apostrophe, Unterstriche usw.

advzipfunktioniert nicht, da es eine nicht unterstützte Komprimierungsmethode meldet (ein Grund, warum sie neu gepackt werden müssen). Alle diese Dateien werden entpackt, sie müssen nur mit etwas Automatisierung neu gepackt/gepackt werden, da es Tausende sind.

Die Dateien wurden ursprünglich unter Windows mit MP3+G Toolz für eine Karaoke-Bibliothek erstellt.

Betriebssystem: Linux Mint 18
Skriptschreiben: Anfänger

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

Oben steht, was ich suche, größtenteils. Da ich aber nicht gut mit Skripten umgehen kann, bin ich mir nicht sicher, wie ich das auch für alle Zip-Dateien in Unterverzeichnissen machen kann. Beispiel für einen Dateinamen:

SC0000-01 - Someone - Something.zip

Die Dateien in der ZIP-Datei sind

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

Antwort1

wenn ich advzip erwähne, gehe ich davon aus, dass Sie Linux verwenden. Hier können Sie ein einfaches Skript schreiben, das jede Datei in einer Schleife durchläuft

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

hoffe, das hilft, andernfalls wäre es ratsam, etwas mehr Details anzugeben.

Antwort2

Sofern ich es nicht unnötig kompliziert gemacht habe:

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

verwandte Informationen