У меня есть набор комиксов, в которых я храню на своем компьютере, главным образом .cbz
формат (который является просто архивом ZIP, но с необычным именем). Недавно, я решил сделать коллаж покрытий определенного комического ряда, для которого мне будет нужен первый файл в архиве комиксов.
Вот разбивка проблемы:
.cbz
файлы в единственной папке;<series name> #<issue number>
, откуда номера выпуска идут 1 до 75 (одна проблема: это не похоже 01, 02, 03, и т.д., таким образом, может быть беспорядок с сортировкой там); <issue name> <3-digit issue number with preceding zeros>
.zip
при необходимости, но я знаю 7Zip (и некоторый другой archivers, но не unrar) обрабатывает CBZ достаточно хорошо;В чем я нуждаюсь:
Что я имею:
Как я заставляю это произойти? Какая команда извлечет первый файл из каждого архива в папке к той же папке?
Если Вы не должны переименовывать выходные файлы затем, я предлагаю что-то вроде этого:
#!/bin/bash
for file in *.cbz
do
cover="`zipinfo -2 "$file" | awk 'NR==2 {exit} 1'`"
unzip -j "$file" "$cover"
done;
Сохраните его в файле как script.sh
и помещенный это в тот же каталог, поскольку Ваши комиксы. Затем дайте его, выполняют разрешение:
chmod +x script.sh
И выполненный это:
./script.sh
Мы можем получить список всех файлов в рамках использования архива zip zipinfo
:
zipinfo -2 mycomic.cbz
это производит что-то подобное:
First file within the archive.jpg
Second file within the archive.jpg
...
Затем использование awk 'NR==1 { print }'
мы можем возвратить первое имя файла, которое является: First file within the archive.jpg
.
Теперь для извлечения этого файла я могу использовать a unzip
как:
unzip -j mycomic.cbz "First file within the archive.jpg"