J'ai une collection de bandes dessinées que je stocke sur mon ordinateur, principalement au format .cbz
(qui n'est qu'une archive Zip, mais avec un nom de fantaisie). Récemment, j'ai décidé de faire un collage des couvertures d'une série de bandes dessinées spécifique, pour laquelle j'aurais besoin du premier fichier des archives de bandes dessinées.
Voici la ventilation du problème:
.cbz
fichiers dans un seul dossier;<series name> #<issue number>
, où les numéros d'édition vont de 1 à 75 (un problème: ce n'est pas comme 01, 02, 03, etc., il peut donc y avoir une confusion avec le tri); <issue name> <3-digit issue number with preceding zeros>
.Zip
si nécessaire, mais je sais que 7Zip (et quelques autres archiveurs, mais pas encore non) gère assez bien CBZ;Ce dont j'ai besoin:
Ce que j'ai:
Comment puis-je y arriver? Quelle commande extraira le premier fichier de chaque archive d’un dossier dans le même dossier?
Si vous n'avez pas besoin de renommer les fichiers de sortie, je vous suggère quelque chose comme ceci:
#!/bin/bash
for file in *.cbz
do
cover="`zipinfo -2 "$file" | awk 'NR==2 {exit} 1'`"
unzip -j "$file" "$cover"
done;
Enregistrez-le dans un fichier tel que script.sh
et placez-le dans le même répertoire que vos bandes dessinées. Puis donnez-lui la permission d'exécution:
chmod +x script.sh
Et lancez-le:
./script.sh
Nous pouvons obtenir une liste de tous les fichiers d’une archive Zip en utilisant zipinfo
:
zipinfo -2 mycomic.cbz
il produit quelque chose de similaire à:
First file within the archive.jpg
Second file within the archive.jpg
...
Ensuite, en utilisant awk 'NR==1 { print }'
, nous pouvons renvoyer le premier nom de fichier qui est: First file within the archive.jpg
.
Maintenant, pour extraire ce fichier, je peux utiliser un unzip
comme:
unzip -j mycomic.cbz "First file within the archive.jpg"