Как извлечь первый файл из cbz файлов в одном пакете?

У меня есть набор комиксов, в которых я храню на своем компьютере, главным образом .cbz формат (который является просто архивом ZIP, но с необычным именем). Недавно, я решил сделать коллаж покрытий определенного комического ряда, для которого мне будет нужен первый файл в архиве комиксов.

Вот разбивка проблемы:

  • 75 .cbz файлы в единственной папке;
  • Каждый файл имеет имя как <series name> #<issue number>, откуда номера выпуска идут 1 до 75 (одна проблема: это не похоже 01, 02, 03, и т.д., таким образом, может быть беспорядок с сортировкой там);
    • Как каждый файл в каждом архиве называют <issue name> <3-digit issue number with preceding zeros>
  • Архивы могут быть переименованы к .zip при необходимости, но я знаю 7Zip (и некоторый другой archivers, но не unrar) обрабатывает CBZ достаточно хорошо;

В чем я нуждаюсь:

  • Первый файл из каждого из 75 архивов. Файлы уже имеют описательные имена, таким образом, нет никакой потребности переименовать их в выводе.

Что я имею:

  • Ubuntu 16.04
  • 7Zip
  • Интернет-соединение

Как я заставляю это произойти? Какая команда извлечет первый файл из каждого архива в папке к той же папке?

3
задан 28 May 2017 в 18:38

1 ответ

Если Вы не должны переименовывать выходные файлы затем, я предлагаю что-то вроде этого:

#!/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"
5
ответ дан 1 December 2019 в 15:34

Другие вопросы по тегам:

Похожие вопросы: