Script pour afficher fichiers d1 répertoire
Résolu
jeje_toulouse
Messages postés
46
Date d'inscription
Statut
Membre
Dernière intervention
-
jeje_toulouse Messages postés 46 Date d'inscription Statut Membre Dernière intervention -
jeje_toulouse Messages postés 46 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
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:
- Script pour afficher fichiers d1 répertoire
- Script vidéo youtube - Guide
- Afficher appdata - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Répertoire téléphonique gratuit - Télécharger - Bureautique
15 réponses
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" ;-))
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
Donc je fait simplement un ls -l dans mon fichier script...
Je pensais plus compliqué donc j'ai même pas essayé...
encore merci
Salut,
Donc je fait simplement un ls -l dans mon fichier script...
ce n'est pas l(leurre ;)
mais le chiffre 1 ("un")
Donc je fait simplement un ls -l dans mon fichier script...
ce n'est pas l(leurre ;)
mais le chiffre 1 ("un")
ls -1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
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...
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
Par contre, se pose toujours le problème des extensions !!!!
thank
Comme expliqué par lami20j au post précédent, c'est un "1" (le chiffre UN) et non un "L" (la lettre "elle" minuscule) !
IMPECCABLE..... GENIAL....
Merci à vous deux lami20j et jipicy
super... vous me faite gagner énormement de temps
encore merci pour votre rapidité
Merci à vous deux lami20j et jipicy
super... vous me faite gagner énormement de temps
encore merci pour votre rapidité
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é
mais le fichier s'appelle nom.prenom avec l'extension .txtpour eviter ça tu peux faire
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 nomDonc 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.prenomou
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
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 !!!!!!!!!!!!
( Tu demandes un truc, et les gars ils te répondent en améliorant ta demande... top cool les gars )
re thank !!!!!!!!!!!!
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 ) !!!!!!
....
# 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 ) !!!!!!
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 :
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 '';-)