Как перепаковать несколько zip-файлов

Как перепаковать несколько zip-файлов

У меня есть несколько zip-файлов в главном каталоге, которые нужно рекурсивно перепаковать. Эти файлы содержат пробелы, апострофы, подчеркивания и т. д.

advzipне работает, так как жалуется на неподдерживаемый метод сжатия (причина, по которой их нужно перепаковать). Все эти файлы распаковываются, их просто нужно перепаковать/упаковать с некоторой автоматизацией, так как их тысячи.

Первоначально файлы были созданы в Windows с использованием MP3+G Toolz для караоке-библиотеки.

ОС: 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

Связанный контент