IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

[Bash] Boucle for recursive


Sujet :

Administration système

  1. #1
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut [Bash] Boucle for recursive
    Bonjour,

    Je voudrais écrire un script bash qui me calcule les md5 des images iso dans un dossier précis.
    Le problème est que je n'ai aucune idée du nombre de dossier qui se trouve entre les fichiers iso et le dossier.
    Un petit shéma (un exemple) :
    iso
    |
    |---- toto
    |
    |-------tata
    |
    |--------- fichier.iso
    |
    |--------- autre_fichier.iso

    ce que je voudrais c'est calculer les md5 de fichier.iso et autre_fichier.iso

    au début j'ai pensé à un for mais la boucle for ne permet pas de traverser un nombre indéfini de dossier (enfin je pense)

    comment pourrais je faire ?

  2. #2
    Membre émérite Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Par défaut
    Bonsoir,
    Regarde si tu peux faire de la récursivité.
    En gros ca consiste, à un appelle de la fonction qui appelle la meme fonction tant qu'il y a un sous dossier.
    Cdt

  3. #3
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    ou la ce que tu me dis c'est bien plus compliqué, je voulais juste taper quelques lignes de codes

    mais non je vais devoir me taper quelques fonctions (je le ferais donc en perl)

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /iso -type f -name "*.iso" -exec commande {} \;
    la commande find gere la recursivité dans les arborescence pour appliquer sur tout fichier trouvé la commande passée en parametre à l'option -exec

  5. #5
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    je fait cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /Users/slide/repo/sysimage/iso/ -type f -name "*.iso" -exec md5 >> /Users/slide/repo/sysimage/iso/MD5SUM {} \ ;
    qui utilse la commande md5 pour calculer la somme de contrôle MD5 et les >> pour la mettre dans un fichier

    mais erreures

    [CODE]find: -exec: no terminating ";" [\CODE]

    pourquoi mystère


    entout cas merci pour le tuyau

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Tu as un petit soucis dans la syntaxe du find :
    après la commande à exécuter, il faut préciser "{}" pour lui dire où placer les arguments à exéctuer, puis finir par \; pour lui dire que c'est la fin de la commande

    Essayes avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /Users/slide/repo/sysimage/iso/ -type f -name "*.iso" -exec md5 {} \;>> /Users/slide/repo/sysimage/iso/MD5SUM
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    cela me créer de fichier

    un dont le nom est "{}" (je pense que j'ai malplacé les accollades avec l'aide de gangsoleil)

    l'autre qui est le fichier MD5SUM voulu (cela fonctionne)

    au pire à la fin je peu faire un rm -fr du fichier "{}"

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Etrange comportement que tu décris là.... J'ai beau faire des tests dans tous les sens, je n'ai jamais créé de fichier {}...

    Est-ce que tu peux essayer de supprimer ce fichier "{}" , et de recommencer ton test avec la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /Users/slide/repo/sysimage/iso/ -type f -name "*.iso" -exec md5 \{} \; >> /Users/slide/repo/sysimage/iso/MD5SUM
    Si cela reproduit le fichier, est-ce que tu peux nous montrer les informations de ce ficher (ls -l) ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. [bash] Récupérer valeur d'un argument dans boucle for
    Par lamingue dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 26/07/2012, 15h25
  2. Réponses: 12
    Dernier message: 04/07/2011, 16h56
  3. [Bash] Commande dans boucle for
    Par slaborde dans le forum Linux
    Réponses: 7
    Dernier message: 23/04/2009, 16h21
  4. [BASH] boucle for sur des fichiers, recuperation du chemin ?
    Par zevince dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 13/11/2007, 10h47
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo