У меня есть коллекция комиксов, которые я храню на своем компьютере, в основном в формате .cbz (который является только ZIP-архивом, но с причудливым именем). В последнее время я решил создать коллаж из обложки конкретной комической серии, для которой мне понадобится первый файл в архиве комиксов.
Вот разбивка проблемы:
75 .cbz файлов в одной папке; Каждый файл имеет имя, подобное <series name> #<issue number>, где номера выпуска идут от 1 до 75 (одна проблема: это не похоже на 01, 02, 03 и т. Д., Поэтому может возникнуть путаница с сортировкой там); Каждый файл внутри каждого архива имеет имя <issue name> <3-digit issue number with preceding zeros>. При необходимости архивы могут быть переименованы в .zip, но я знаю, что 7Zip (и некоторые другие архиваторы, но не unrar) достаточно хорошо управляет CBZ;Что мне нужно:
75 .cbz файлов в одной папке;Что у меня:
Ubuntu 16.04 Каждый файл имеет имя типа <series name> #<issue number>, где номера выпуска идут от 1 до 75 (одна проблема: это не похоже на 01, 02, 03 и т. д., поэтому может возникнуть путаница с сортировкой там ); Каждый файл внутри каждого архива имеет имя <issue name> <3-digit issue number with preceding zeros> Подключение к ИнтернетуКак это сделать? Какая команда будет извлекать первый файл из каждого архива в папку в ту же папку?
Если вам не нужно переименовывать выходные файлы, я предлагаю что-то вроде этого:
#!/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
We может получить список всех файлов в 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.
Теперь, чтобы извлечь этот файл, я могу использовать unzip, например:
unzip -j mycomic.cbz "First file within the archive.jpg"
Если вам не нужно переименовывать выходные файлы, я предлагаю что-то вроде этого:
#!/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
We может получить список всех файлов в 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.
Теперь, чтобы извлечь этот файл, я могу использовать unzip, например:
unzip -j mycomic.cbz "First file within the archive.jpg"
Если вам не нужно переименовывать выходные файлы, я предлагаю что-то вроде этого:
#!/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
We может получить список всех файлов в 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.
Теперь, чтобы извлечь этот файл, я могу использовать unzip, например:
unzip -j mycomic.cbz "First file within the archive.jpg"