[SH] Boucle For Dossier/Fichiers

Fermé
ZZ2F3 Messages postés 40 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 30 juin 2009 - 8 juil. 2008 à 17:57
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 14 juil. 2008 à 16:29
Bonjour,

Je voudrais avoir un petit peu d'aide quant à mon soucis en Shell.

Je voudrais faire une boucle sur des noms de fichiers contenus dans un dossier connu. Ce dossier ne contient que des fichiers à traiter et en contient forcément.

Est-il possible de faire une boucle sur les fichiers du genre :

Pour chaque fichier du dossier /home/zz2f3... Faire :
Blablabla

Je viens de penser à une éventuelle solution:
Serait-il possible de stocker le résultat de la commande ls sur ce dossier dans une variable (ou un tableau?) pour pouvoir utiliser ces noms de fichiers par la suite?

Merci d'avance à ceux qui prendront le temps (et la peine^^) de me répondre!

Bonne fin de journée.
A voir également:

3 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
14 juil. 2008 à 16:29
ce n'est pas une syntaxe csh, mais sh, ksh ou bash
remplacer la première ligne par #!/bin/bash ou #!/bin/ksh
3
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
8 juil. 2008 à 18:31
Salut,
[tmpfs]$ ls
rep/

[tmpfs]$ tree
.
`-- rep
    |-- fich1.txt
    |-- fich2.txt
    |-- fich3.txt
    |-- fich4.txt
    |-- fich5.txt
    |-- fich6.txt
    |-- fich7.txt
    |-- fich8.txt
    `-- fich9.txt

1 directory, 9 files

[tmpfs]$ for fich in rep/*; do echo "fichier trouvé dans le répertoire \"rep\" : " $(basename $fich); done
fichier trouvé dans le répertoire "rep" :  fich1.txt
fichier trouvé dans le répertoire "rep" :  fich2.txt
fichier trouvé dans le répertoire "rep" :  fich3.txt
fichier trouvé dans le répertoire "rep" :  fich4.txt
fichier trouvé dans le répertoire "rep" :  fich5.txt
fichier trouvé dans le répertoire "rep" :  fich6.txt
fichier trouvé dans le répertoire "rep" :  fich7.txt
fichier trouvé dans le répertoire "rep" :  fich8.txt
fichier trouvé dans le répertoire "rep" :  fich9.txt

[tmpfs]$  
;-))
0
ZZ2F3 Messages postés 40 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 30 juin 2009
14 juil. 2008 à 16:03
Bonjour,

Désolé de la réponse tardive mais j'ai du faire face à d'autres problèmes désormais résolus en attendant depouvoir tester cette solution.
Malheureusement je n'obtiens pas de résultats mais plutot des erreurs :

> ess
Swarm 2.2 (CVS 20060612)
Mon Jul 14 15:02:11 BST 2008
NOTICE: Invoking /software/sunstudio11/SUNWspro/bin/f90 -f77 -ftrap=%none fich in /home/rb6141/30june/Essai/essai1 /home/rb6141/30june/Essai/essai2 /home/rb6141/30june/Essai/essai3 /home/rb6141/30june/Essai/essai4 /home/rb6141/30june/Essai/essai5
ld: fatal: file fich: open failed: No such file or directory
ld: fatal: file in: open failed: No such file or directory
ld: fatal: file /home/rb6141/30june/Essai/essai1: unknown file type
ld: fatal: File processing errors. No output written to a.out
fich: Undefined variable



Mon script est seulement :
#!/usr/bin/csh

for fich in /home/rb6141/30june/Essai/*; do echo "fichier trouvé dans le répertoire Essai : " $fich; done




Le contenu de ce dossier /home/rb6141/30june/Essai est 5 fichiers essai&, essai2, essai3, essai4, essai5.

Merci d'avance =)

Bonne journée en ce 14 juillet!
0