rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Script pour afficher fichiers d1 répertoire

Posté par jeje_toulouse, le samedi 24 novembre 2007 à 17:53:54
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
Répondre à jeje_toulouse  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le samedi 24 novembre 2007 à 17:57:27
Salut,
ls -1 /chemin/repertoire/
;-))

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje_toulouse, le samedi 24 novembre 2007 à 18:02:33
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
Répondre à jeje_toulouse

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le samedi 24 novembre 2007 à 18:17:49
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

lami20j
Répondre à lami20j

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje_toulouse, le samedi 24 novembre 2007 à 18:18:06
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...
Répondre à jeje_toulouse

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le samedi 24 novembre 2007 à 18:19:30
peu compliqué, désolé, mais c'est pour éviter les erreurs de saisie ).
regarde ici message 3
lami20j
Répondre à lami20j

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje_toulouse, le samedi 24 novembre 2007 à 18:20:16
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
Répondre à jeje_toulouse

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le samedi 24 novembre 2007 à 18:21:48
Comme expliqué par lami20j au post précédent, c'est un "1" (le chiffre UN) et non un "L" (la lettre "elle" minuscule) !

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le samedi 24 novembre 2007 à 18:22:17
ls -1 | cut -d'.' -f1 

lami20j
Répondre à lami20j

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje_toulouse, le samedi 24 novembre 2007 à 18:31:43
IMPECCABLE..... GENIAL....

Merci à vous deux lami20j et jipicy

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

encore merci pour votre rapidité
Répondre à jeje_toulouse

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le samedi 24 novembre 2007 à 18:37:55
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




lami20j
Répondre à lami20j

11


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le samedi 24 novembre 2007 à 18:47:58
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" ;-))

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje_toulouse, le samedi 24 novembre 2007 à 19:07:57
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 !!!!!!!!!!!!
Répondre à jeje_toulouse

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le samedi 24 novembre 2007 à 19:11:41
Ben entre ToulouZainG conG, c'est normal conG ;-DDD

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje_toulouse, le samedi 24 novembre 2007 à 19:28:15
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 ) !!!!!!
Répondre à jeje_toulouse

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le samedi 24 novembre 2007 à 20:18:48
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 ''
;-)

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 jeje_toulouse, le samedi 24 novembre 2007 à 20:50:46
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............
Répondre à jeje_toulouse
Logiciels pertinents trouvés dans les téléchargements
Télécharger SyncBack 3.2.18.0SyncBack - SyncBack est un logiciel de synchronisation de répertoires. Il peut être utilisé: pour effectuer des backups de fichiers...Catégorie: Sauvegarde
Licence: Freeware/gratuit
Télécharger IsoBuster 2.4IsoBuster - IsoBuster est un outil de récupération de CD, DVD, HD-DVD et BD prenant en charge tous les formats et tous leurs système de...Catégorie: Gravure
Licence: Freeware/gratuit
Télécharger WinDirStat 1.1.2WinDirStat - WinDirStat est utile pour voir ce qui prend de la place sur votre disque dur. Il permet de voir la place occupée par...Catégorie: Gestion de fichiers
Licence: Open Source
Télécharger Cobian Backup 8.4.0.202Cobian Backup - Cobian Backup est une application multitâche permettant de planifier une sauvegarde automatique de fichiers ou répertoires...Catégorie: Sauvegarde
Licence: Open Source
Plus de logiciels gratuits sur « Script pour afficher fichiers d1 répertoire »