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 GNU Discussion :

[SHELL] lister les répertoires et mettre le nom de chacun d'eux dans une variable.


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Par défaut [SHELL] lister les répertoires et mettre le nom de chacun d'eux dans une variable.
    Bonjour,

    N'ayant trouvé nulle part de réponse à ma question, je me permet de créer un nouveau topic.

    Je souhaiterais lister les répertoires dans un dossier (avec un ls -d */ par exemple) et metre chaque résultat dans une variable différente.

    Des idées ?

    Merci d'avance

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 341
    Par défaut
    Bonjour,

    Une réponse aussi précise que la question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ ls -l
    total 20
    drwxrwxr-x. 2 x x 4096  1 juin  17:07 bar1
    drwxrwxr-x. 2 x x 4096  1 juin  17:07 bar2
    drwxrwxr-x. 2 x x 4096  1 juin  17:07 foo1
    drwxrwxr-x. 2 x x 4096  1 juin  17:07 foo2
    drwxrwxr-x. 2 x x 4096  1 juin  17:07 foo bar
    $ set */
    $ echo $1
    bar1/
    $ echo $2
    bar2/
    $ echo $3
    foo1/
    $ echo $4
    foo2/
    $ echo $5
    foo bar/

  3. #3
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ bla=( $( ls -d ~/Documents/script/*/) )
    $ echo ${bla[*]}
    /home/dolanTrump/Documents/script/perl/ /home/dolanTrump/Documents/script/python/ /home/dolanTrump/Documents/script/sandbox/ /home/dolanTrump/Documents/script/shell/
    $ echo ${bla[2]}
    /home/dolanTrump/Documents/script/sandbox/
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 341
    Par défaut
    Non, on n'utilise pas ls et surtout comme ça !!!
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ ls -1d ~/bob/*/
    /home/disedorgue/bob/bar1/
    /home/disedorgue/bob/bar2/
    /home/disedorgue/bob/foo1/
    /home/disedorgue/bob/foo2/
    /home/disedorgue/bob/foo bar/
    $ bla=( $( ls -d ~/bob/*/) )
    $ echo ${bla[4]}
    /home/disedorgue/bob/foo
    $ echo ${bla[5]}
    bar/
    Par contre, ce que j'ai proposé plus haut, cela fonctionne... et $1,$2... sont aussi des variables (dans les specs, juste dit de mettre dans des variables... )

    Sinon, sur le même principe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ bla=(  ~/bob/*/ )
    $ echo ${bla[5]}
     
    $ echo ${bla[4]}
    /home/disedorgue/bob/foo bar/
    $ echo ${bla[*]}
    /home/disedorgue/bob/bar1/ /home/disedorgue/bob/bar2/ /home/disedorgue/bob/foo1/ /home/disedorgue/bob/foo2/ /home/disedorgue/bob/foo bar/

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 640
    Par défaut
    attention à bien utiliser @ pour "exprimer" un tableau, et à mettre les variables entre guillemets
    la différence entre * et @ apparaît justement quand on les utilise entre guillemets :

    "${tableau[*]}" est une seule variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ tableau=( ./* )
    $ printf '%s\n' "${tableau[*]}"
    ./fic1 ./fic2 ./fi c3
    "${tableau[@]}" est autant de variables qu'il y a d'éléments dans le tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ printf '%s\n' "${tableau[@]}"
    ./fic1
    ./fic2
    ./fi c3
    si on n'utilisait pas de guillemets, printf, suivant l'IFS pour le découpage en mots et le formatage indiqué, ./fi c3 apparaîtrait sur deux lignes...


    Citation Envoyé par disedorgue
    Non, on n'utilise pas ls et surtout comme ça !!!
    que c'est doux à mes oreilles !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. [Think Pascal] Mettre la lecture de la touche ENTRER dans une variable de type char
    Par inidark dans le forum Autres IDE
    Réponses: 1
    Dernier message: 21/05/2009, 23h21
  2. Récupérer le nom du fichier en cours dans une variable.
    Par quiky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 06/05/2009, 13h28
  3. Réponses: 1
    Dernier message: 08/02/2009, 08h19
  4. Réponses: 1
    Dernier message: 04/04/2007, 11h03
  5. Réponses: 13
    Dernier message: 24/08/2006, 13h05

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