Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/10/2008, à 10: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, à 12:04)

Hors ligne

#2 Le 21/10/2008, à 11: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, à 11: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, à 11: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, à 12: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, à 12:05)

Hors ligne

#6 Le 21/10/2008, à 12: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