Script pour afficher fichiers d1 répertoire

Résolu
jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a toutes et tous,

Je réalise un script unix dans le cadre de mon travail, et je voudrais afficher à l'écran la liste des fichiers contenus dans un répertoire ( qui n'est pas le répertoire dans lequel je travaille ).
Cette commande de type echo machin machin ou autre doit etre intégrée dans mon script de manière que lorsque je le lance, il m'affiche la listes des fichiers du répertoire indiqué afin de pouvoir choisir un nom de fichier listé.

Exemple :
......
xxxxx.xx ( ceci est la liste des fichier contenus dans le répertoire désiré )
mmmm.mm
llllllll.ll
nnnnnn.nn
Choisir le nom du fichier à traiter : ( je copie/colle le nom listé juste dessus pour éviter des erreurs de saisi )
........

donc j'ai fait ceci :
#"commande qui va bien que je ne trouve pas"

echo Choisir le nom du fichier à traiter : \c'
read REPONSEMAT
#etc etc
....

Si vous connaissez la réponse, je suis preneur.
Par avance, merci
Configuration: Windows XP
Internet Explorer 7.0

15 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Et une petite variante pour la présentation et la sélection, peut être plus sympa et plus pratique que le copier/coller.
    [tmpfs]$ cat foo.sh     # le script
    
    #! /bin/bash
    
    echo -e "Choisissez un fichier dans la liste :\n"
    ls -1 rep/ | cut -d'.' -f1 | cat -n
    echo
    echo -e "Entrez le numéro correspondant : \c"
    read reponse
    echo
    echo -e "Le fichier choisi est : $(ls -1 rep/ | sed -n "${reponse} s/\..*$//p")"
    echo
    
    [tmpfs]$ ls -1 rep/     # le contenu du répertoire
    
    fichier1.txt
    fichier2.txt
    fichier3.txt
    fichier4.txt
    fichier5.txt
    
    [tmpfs]$ ./foo.sh     # l'exécution du script
    
    Choisissez un fichier dans la liste :
    
         1  fichier1
         2  fichier2
         3  fichier3
         4  fichier4
         5  fichier5
    
    Entrez le numéro correspondant : 4
    
    Le fichier choisi est : fichier4
    
    [tmpfs]$
    A adapter avec les améliorations de "lami20j" ;-))
    2
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    ls -1 /chemin/repertoire/
    ;-))
    0
  3. jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci a toi...

    Donc je fait simplement un ls -l dans mon fichier script...
    Je pensais plus compliqué donc j'ai même pas essayé...

    encore merci
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Donc je fait simplement un ls -l dans mon fichier script...

    ce n'est pas l(leurre ;)
    mais le chiffre 1 ("un")
    ls -1
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
     
    Après test avec cygwin, effectivement ça fonctionne.
    Le seul "petit" souci, c'est que les droit / le user / la taille / la date sont affiché aussi par la même occasion.
    J'ai donc fait un ls -x ou ls -C mais les fichiers ne sont pas affiché uniquement lignes par lignes ( je sais ,je suis un peu compliqué, désolé, mais c'est pour éviter les erreurs de saisie ).
    Et de plus, je voudrais que l'extension des fichier n'apparaisse pas.

    merci du coup de pouce...
    0
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    peu compliqué, désolé, mais c'est pour éviter les erreurs de saisie ).
    regarde ici message 3
    0
  8. jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
     
    Impec avec le ls -1 ( et pas -l , j'avais pas vu ta réponse )
    Par contre, se pose toujours le problème des extensions !!!!

    thank
    0
  9. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Comme expliqué par lami20j au post précédent, c'est un "1" (le chiffre UN) et non un "L" (la lettre "elle" minuscule) !
    0
  10. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    ls -1 | cut -d'.' -f1 
    0
  11. jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
     
    IMPECCABLE..... GENIAL....

    Merci à vous deux lami20j et jipicy

    super... vous me faite gagner énormement de temps

    encore merci pour votre rapidité
    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Juste un petit détail.
    Si jamais les noms de fichiers contient des points hors l'extension, ça ne marche pas la commande que je t'ai donné
    lami20j@debian:~/trash2$ ls -1
    abc
    a.c
    b.c
    nom.prenom.txt
    lami20j@debian:~/trash2$ ls -1 | cut -d'.' -f1
    abc
    a
    b
    nom
    Donc on voit bien que le nom de fichier est tronqué après le 1er point (et ce n'est pas ça qu'on veux)
    mais le fichier s'appelle nom.prenom avec l'extension .txtpour eviter ça tu peux faire
    lami20j@debian:~/trash2$ ls -1
    abc
    a.c
    b.c
    nom.prenom.txt
    lami20j@debian:~/trash2$ ls -1 | sed 's/\(.*\)\(\..*\)$/\1/'
    abc
    a
    b
    nom.prenom
    
    ou
    lami20j@debian:~/trash2$ ls -1
    abc
    a.c
    b.c
    nom.prenom.txt
    lami20j@debian:~/trash2$ ls -1 | sed -r 's/(.*)(\..*)$/\1/'
    abc
    a
    b
    nom.prenom
    


    0
  13. jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
     
    Je vais tester tout ça......Je vous tient au courant..
    ( Tu demandes un truc, et les gars ils te répondent en améliorant ta demande... top cool les gars )

    re thank !!!!!!!!!!!!
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ben entre ToulouZainG conG, c'est normal conG ;-DDD
      0
  14. jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
     
    Voici mon script :

    ....
    # Variables a definir apres conversion DPSF6
    # ------------------------------------------
    REPMATASSYSTEM=/home/aa

    # Listage des matériaux
    echo ''
    echo 'Liste des matériaux dans le répertoire ASSYSTEM : '$REPMATASSYSTEM
    echo '-------------------------------------------------'
    ls -1 $REPMATASSYSTEM | cut -d'.' -f1

    # Choix des paramètres
    echo ''
    echo 'Taper le materiau choisi dans la liste ci dessus : \c'
    read REPONSEMAT
    echo ''
    echo 'Taper le KSNULL choisi ( 1 ou 0 ) : \c'
    read REPONSEKSNULL
    echo ''
    echo 'Taper le paramètre COMPRESSION choisi ( YES ou NO en majuscule ) : \c'
    read REPONSECOMP
    echo ''

    MATERIAU=$REPONSEMAT
    #FATIGUE_MATPWD_SJP=/home/fatigue-materiaux
    NBVOL=1000
    FTRONCINF=.001
    FSUP=500
    IQF=100
    KSNUL='KSNUL='$REPONSEKSNULL
    COMPRESSION=$REPONSECOMP

    # Récap
    echo 'Récap des paramètres :'
    echo '-------------------------------'
    echo '| Matériau : '$MATERIAU
    echo '| KSNULL = '$REPONSEKSNULL
    echo '| COMPRESSION = '$COMPRESSION
    echo '-------------------------------'
    echo ''
    .......

    donc :
    - Le "-e" de "echo -e", il fait quoi de plus que le "echo" seul ?
    - Concernant le listage pour taper le numéro avec "| cat -n", ma variable REPONSEMAT se voit attribuer le N° au lieu du nom que je veux.
    - Pour ce qui est du "." ( si existance ) avant le "." de l'extension du fichier, dans mon cas, tous les fichier sont du style xxxx_xxx.xxx, donc, le pb ne se pose pas ( mais merci lami20j, j'ai tout noté, ça peut me servir plus tard ).

    Enfin, j'avoue que j'ai un peu de mal a intégrer vos améloirations... mais bon, je débute, mais je m'y penche dessus.
    Je vous tient au courant... et encore encore merci ( ils vont se dire, "quel lèche C.. celui ci ) !!!!!!
    0
  15. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    Bon le "echo -e" sert à interpréter les caractères d'échappement tel que "\c" ou "\n", autrement dit empêcher le saut de ligne final "\c" ou en rajouter un "\n".

    Essaye ton script de cette façon :
    # Variables a definir apres conversion DPSF6
    # ------------------------------------------
    REPMATASSYSTEM="/home/aa"
    
    # Listage des matériaux
    echo ''
    echo 'Liste des matériaux dans le répertoire ASSYSTEM : '$REPMATASSYSTEM
    echo '-------------------------------------------------'
    ls -1 $REPMATASSYSTEM | cut -d'.' -f1 | cat -n
    
    # Choix des paramètres
    echo ''
    echo -e 'Taper le numéro du materiau choisi dans la liste ci dessus : \c'
    read REPONSEMAT
    echo ''
    echo -e 'Taper le KSNULL choisi ( 1 ou 0 ) : \c'
    read REPONSEKSNULL
    echo ''
    echo -e 'Taper le paramètre COMPRESSION choisi ( YES ou NO en majuscule ) : \c'
    read REPONSECOMP
    echo ''
    
    MATERIAU=$(ls -1 ${REPMATASSYSTEM} | sed -n "${REPONSEMAT} s/\..*$//p")
    #FATIGUE_MATPWD_SJP=/home/fatigue-materiaux
    NBVOL=1000
    FTRONCINF=.001
    FSUP=500
    IQF=100
    KSNUL=$REPONSEKSNULL
    COMPRESSION=$REPONSECOMP
    
    # Récap
    echo 'Récap des paramètres :'
    echo '-------------------------------'
    echo '| Matériau : '$MATERIAU
    echo '| KSNULL = '$REPONSEKSNULL
    echo '| COMPRESSION = '$COMPRESSION
    echo '-------------------------------'
    echo ''
    ;-)
    0
  16. jeje_toulouse Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci, là j'ai le top script...
    J'ai plus qu'a faire la gestion d'erreurs....

    Pb résolu à 200% par rapport à ma demande.

    Surement à plus tard les gars............
    0