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

Shell et commandes POSIX Discussion :

Script Shell - récursivité


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Par défaut Script Shell - récursivité
    Bonjour à tous et merci par avance de votre aide.
    Je suis novice en scripting Shell et je bloque actuellement sur une fonction permettant une lecture récursive des répertoires.

    J'ai essayé avec la commande ls -R -l (car j'ai besoin de la date de modification) sauf que les résultats ne s'affichent pas comme je le souhaite. Exemple :

    3 dossiers XXX, 3 sous dossiers dans chaque dossier XXX que l'on va nommé YYY et enfin mes fichiers ZZZ contenu dans mes sous dossiers YYY.
    Les résultats s'affichent de cette façon

    Dossier 1 XXX
    Dossier 2 XXX
    Dossier 3 XXX

    Sous-dossier 1 YYY
    Sous-dossier 1 YYY
    Sous-dossier 1 YYY

    Sous-dossier 2 YYY
    Sous-dossier 2 YYY
    Sous-dossier 2 YYY

    Sous-dossier 3 YYY
    Sous-dossier 3 YYY
    Sous-dossier 3 YYY

    Fichier ZZZ (Correspondant au sous dossier 1)
    Fichier ZZZ (Correspondant au sous dossier 1)
    Fichier ZZZ (Correspondant au sous dossier 2)
    Fichier ZZZ (Correspondant au sous dossier 2)
    Fichier ZZZ (Correspondant au sous dossier 3)
    Fichier ZZZ (Correspondant au sous dossier 3)
    (* le nombre de sous dossiers.)

    Alors que je souhaiterai un tri comme ceci :

    Dossier 1 XXX
    Sous-dossier 1 YYY
    Fichier 1 ZZZ
    Fichier 2 ZZZ
    Sous-dossier 2 YYY
    Fichier 1 ZZZ
    Fichier 2 ZZZ

    Dossier 2 XXX
    Sous-dossier 1 YYY
    Fichier 1 ZZZ
    Fichier 2 ZZZ
    Sous-dossier 2 YYY
    Fichier 1 ZZZ
    Fichier 2 ZZZ

    J'ai vu des méthodes en écrivant tous les paths des dossiers et en bouclant dessus mais j'en ai un nombre important (environ 160 contenant tous une dizaine de sous dossiers) j'imagine donc qu'il y a probablement une autre solution...

    Merci,
    Leam

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Regarde du côté de la commande tree

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Par défaut
    J'ai essayé de faire un man tree dans mon terminal et la commande n'est pas trouvée.
    J'ai oublié de préciser que je suis sous Mac OS(10.6.8).. Cela doit avoir une incidence.

    Pourquoi ne faut-il pas utiliser le "ls" dans un script ?
    J'essaye avec la commande Find et stat, je vous tiens au courant de l'avancée.

  4. #4
    Membre Expert
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 562
    Par défaut
    Citation Envoyé par LeamCart Voir le message
    Pourquoi ne faut-il pas utiliser le "ls" dans un script ?
    Nos modérateurs préférés de la rubrique nous le rapellent à juste titre régulièrement, voir la FAQ Linux ci-dessous :
    Pourquoi faut-il eviter la commande ls dans les scripts ?
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

    Liste des balises BB

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Par défaut
    Merci, je prend en compte cette information.
    Néanmoins je n'ai pas vraiment eu réponse à ma question (mis à part la fonction tree qui n'existe pas chez moi).
    Il n'existe aucune autre façon que de boucler indéfiniment sur mes 1600 dossiers et de récupérer les informations que je souhaite en les triant "un à un"?

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 291
    Par défaut
    Pardon, mais ça ressemble à une fausse bonne idée. C'est peut-être à-peu-près lisible pour un humain, mais pour tout autre traitement industriel, éclater le chemin ainsi est mauvais.

    Avec le find tu as toutes les infos dont tu as besoin. Après c'est juste de la manipulation de fichiers texte avec sed, grep, awk.

    Quelle est la finalité ?

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 291
    Par défaut
    Bonjour,

    Citation Envoyé par un illustre inconnu
    On utilise pas ls dans un script!
    Plutôt que d'utiliser "ls" pour trouver les fichiers, pourquoi ne pas utiliser "find" ?

    Plutôt que d'utiliser "ls" pour avoir la date de modification, pourquoi ne pas utiliser "stat" comme les commandes suivantes ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script shell
    Par anzar dans le forum Linux
    Réponses: 4
    Dernier message: 03/12/2004, 14h41
  2. [JSP] script shell
    Par goolix dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/08/2004, 09h08
  3. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    Réponses: 8
    Dernier message: 15/06/2004, 16h31
  4. Explication script shell
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 14/06/2004, 13h54
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24

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