複数の zip ファイルを再パックする方法

複数の zip ファイルを再パックする方法

メイン ディレクトリに、再帰的に再パックする必要がある複数の zip ファイルがあります。これらのファイルには、スペース、アポストロフィ、アンダースコアなどが含まれています。

advzipサポートされていない圧縮方法 (再パックが必要な理由) に関するエラーが表示されるため、機能しません。これらのファイルはすべて解凍されますが、数千あるため、ある程度の自動化によって再圧縮/パックする必要があります。

ファイルは元々、カラオケ ライブラリ用の MP3+G Toolz を使用して Windows で作成されました。

OS: Linux Mint 18
スクリプト作成: 初心者

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

上記は、私が探しているものです。ただし、スクリプトが得意ではないので、サブディレクトリ内のすべての zip に対してもこれをどのように作成すればよいかわかりません。ファイル名の例:

SC0000-01 - Someone - Something.zip

zip内のファイルは

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

答え1

advzipについて言及するとき、Linuxを使用していると想定しています。ここでは、各ファイルをループする簡単なスクリプトを書くことができます。

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

これがお役に立てば幸いです。そうでない場合は、さらに詳しい情報を提供することをお勧めします。

答え2

必要以上に複雑にしない限りは:

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

関連情報