メイン ディレクトリに、再帰的に再パックする必要がある複数の 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