У меня есть куча файлов .zip и .rar. Многие из этих файлов содержат подпапки в архиве. Я хочу удалить все папки из zip-файлов, но сохранить другой контент.
например
original.zip
- /foo/bar1.jpg
- /foo/bar2.jpg
- /foo/bar3.jpg
- /foo/bar4.jpg
>>>
new.zip
- bar1.jpg
- bar2.jpg
- bar3.jpg
- bar4.jpg
Это может быть команда терминала или скрипт bash. Мне нужно иметь возможность запускать его одновременно на сотнях файлов zip/rar.
обновление: это не представляется возможным без воссоздания zips + rars.
Итак, я написал небольшой сценарий bash, он создает две папки:"очищенные" для постобработанных файлов и "temp" для разархивированных файлов. Он просматривает все архивы в текущем каталоге (файлы .cbr и .cbz), создает "чистое имя" для каждого нового файла, распаковывает старый файл во временный каталог, создает новый архив из временных файлов и сохраняет его с чистым именем в "очищенном" каталоге, затем очищает временную папку. после обработки всех файлов "временный" каталог рекурсивно удаляется. вот как это выглядит:
#!/bin/bash
echo "comic cleaning!";
echo "---------------";
dir=$(pwd)/;
tmp=${dir}temp/;
clean=$(pwd)/cleaned;
cd $dir;
mkdir -p cleaned;
mkdir -p temp;
for z in *.cb*; do
cd $dir;
filename=$(basename "$z");
rawname="${filename%.*}";
name="${rawname// /_}";
7z e "$dir$z" -otemp/;
cd $tmp && zip -r $clean/$name.cbz *.jpg;
cd $tmp && rm *.*;
done
cd $dir && rm -rf $tmp;
Вероятно, мне следует использовать каталог os /tmp, но я все еще новичок в bash и не могу заставить его работать. Есть предложения по его оптимизации?