#1 Le 21/10/2008, à 09:37
- jean bono
[RESOLU]extraire de maniere recursive
bonjour je viens de telecharger les scans de toute la serie dragon ball pour me replonger dedans
le resultat est une archive contenant 42 archives (les volumes) qui contiennent chacun 11 archives (les chapitres)
j'ai pu extraire tous les volumes en faisant une selection multiple mais maintenant qu'il faut extraire chaque chapitre de chaque volume je me dis autant le faire en console
je cherche juste la formule exacte
je pense utiliser une boucle for
donc
for i in 01 42
je sais pas comment on délimite l'intervalle de i
on fait la commande
{cd Dragon_Ball_v$i (je crois que c'est comme ca) && unzip *.zip && cd ..}
est ce que je suis sur la bonne voie?
Dernière modification par jean bono (Le 21/10/2008, à 11:04)
je ne suis pas seulement un con...
Génération-linux
Une aide personnalisée avec les Parrains Linux
Hors ligne
#2 Le 21/10/2008, à 10:11
- Jardiland
Re : [RESOLU]extraire de maniere recursive
C'est sur la bonne voie :
- Pour sélectionner tes 42 dossiers, tu peux utiliser les jokers :
for i in Dragon*;
Le point-virgule est important, c'est lui qui dit que la listye est terminée.
- Les commandes de la boucle se placent entre do et done et pas entre { et }
Réinstaller son système au moindre soucis est un réflexe de windowsien.
Sous linux, tous les problèmes peuvent être résolu sans réinstaller
---
Votre ordinateur s'ennuie ? Faites le participer à la recherche contre le cancer !
Hors ligne
#3 Le 21/10/2008, à 10:19
- Cedonix
Re : [RESOLU]extraire de maniere recursive
Voila un petit code qui fait ce que tu souhaites :
#!/bin/bash
for i in Dragon*;
do
cd $i && ls *.zip | xargs -i unzip {} && rm *.zip && cd ..
done
Explication :
for i in Dragon*;
Ceci permet de lister tous les répertoires commançant par "Dragon".
cd $i && ls *.zip | xargs -i unzip {} && rm *.zip && cd ..
Permet de rentrer dans le répertoire lister, de lister les fichiers zip, de les dézipper, d'effacer les fichiers zip et de remonter dans le répertoire parent
Rêvons nos vies, vivons nos rêves.
Hors ligne
#4 Le 21/10/2008, à 10:52
- kordan
Re : [RESOLU]extraire de maniere recursive
Ceci devrait fonctionner
for i in Dragon*/*.zip ; do unzip -d "${i%/*}" "$i" && rm "$i" ; done
#5 Le 21/10/2008, à 11:00
- jean bono
Re : [RESOLU]extraire de maniere recursive
merci ca a tres bien marche
maintenant je vais essayer de creuser ca un peu plus
cd $i && ls *.zip | xargs -i unzip {} && rm *.zip && cd ..
est ce que c'est possible de changer
ls *.zip | xargs -i unzip {}
en unzip *.zip pour lui dire de dezipper tous les fichiers qui ont l'extension .zip
parce que ta commande lui demande de lister tous les zip
puis d'extraire tous les elements de la liste
c'est ca?
Dernière modification par jean bono (Le 21/10/2008, à 11:05)
je ne suis pas seulement un con...
Génération-linux
Une aide personnalisée avec les Parrains Linux
Hors ligne
#6 Le 21/10/2008, à 11:40
- Cedonix
Re : [RESOLU]extraire de maniere recursive
est ce que c'est possible de changer
Code:ls *.zip | xargs -i unzip {}
en unzip *.zip pour lui dire de dezipper tous les fichiers qui ont l'extension .zip
Non car tu auras une erreur du type :
caution: filename not matched: Mon_film.zip
parce que ta commande lui demande de lister tous les zip
puis d'extraire tous les elements de la liste
c'est ca?
Oui tout à fait. Ce qui permet de contourner l'erreur renvoyé en faisant unzip *.zip
En fait la commande xargs permet d'appeler une autre commande, en passant en paramètre les données qu'elle reçoit dans le flux d'entrée standard. Donc dans notre cas à l'aide de la commande xargs on passe en paramètre à la commande unzip les fichiers retourné par la commande ls *.zip
J'espère avoir répondu à tes questions et avoir été assez clair.
Rêvons nos vies, vivons nos rêves.
Hors ligne