Script pour afficher fichiers d1 répertoire

Résolu/Fermé
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011 - 24 nov. 2007 à 17:53
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011 - 24 nov. 2007 à 20:50
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
A voir également:

15 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
24 nov. 2007 à 18:47
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
24 nov. 2007 à 17:57
Salut,
ls -1 /chemin/repertoire/
;-))
0
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011
24 nov. 2007 à 18:02
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
24 nov. 2007 à 18:17
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011
24 nov. 2007 à 18:18
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
24 nov. 2007 à 18:19
peu compliqué, désolé, mais c'est pour éviter les erreurs de saisie ).
regarde ici message 3
0
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011
24 nov. 2007 à 18:20
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
24 nov. 2007 à 18:21
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
24 nov. 2007 à 18:22
ls -1 | cut -d'.' -f1 
0
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011
24 nov. 2007 à 18:31
IMPECCABLE..... GENIAL....

Merci à vous deux lami20j et jipicy

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

encore merci pour votre rapidité
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
24 nov. 2007 à 18:37
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
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011
24 nov. 2007 à 19:07
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
24 nov. 2007 à 19:11
Ben entre ToulouZainG conG, c'est normal conG ;-DDD
0
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011
24 nov. 2007 à 19:28
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
24 nov. 2007 à 20:18
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
jeje_toulouse Messages postés 46 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 20 novembre 2011
24 nov. 2007 à 20:50
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