Shell, boucler sur des directory
Résolu
wire less
Messages postés
233
Date d'inscription
Statut
Membre
Dernière intervention
-
UnGnU Messages postés 1158 Date d'inscription Statut Contributeur Dernière intervention -
UnGnU Messages postés 1158 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je me suis fais un script pour parcourir des répertoires et faire une certaine action.
C'est toujours la même action, il y a juste le nom des répertoires qui changes
Repertoire_1
Repertoire_2
Repertoire_Toto
Repertoire_Jacques
Repertoire_5
Du coup, je faire désespérément comment faire une boucle sur des noms de répertoire !!
Je sais pas ... Est-ce qu'il est possible en shell de stoker les différents nom de répertoire dans une liste, et ensuite de les parcourir ?
Genre :
Liste = [Repertoire_1 ; Repertoire_2 ; Repertoire_Toto ; Repertoire_Jacques ; Repertoire_5]
For i in Liste
cd Liste(i)
echo(Salut !)
Mon_Traitement
cd ..
Next
J'ai l'impression que c'est pas si simple que ça à faire en shell !
Merci.
Je me suis fais un script pour parcourir des répertoires et faire une certaine action.
C'est toujours la même action, il y a juste le nom des répertoires qui changes
Repertoire_1
Repertoire_2
Repertoire_Toto
Repertoire_Jacques
Repertoire_5
Du coup, je faire désespérément comment faire une boucle sur des noms de répertoire !!
Je sais pas ... Est-ce qu'il est possible en shell de stoker les différents nom de répertoire dans une liste, et ensuite de les parcourir ?
Genre :
Liste = [Repertoire_1 ; Repertoire_2 ; Repertoire_Toto ; Repertoire_Jacques ; Repertoire_5]
For i in Liste
cd Liste(i)
echo(Salut !)
Mon_Traitement
cd ..
Next
J'ai l'impression que c'est pas si simple que ça à faire en shell !
Merci.
A voir également:
- Shell, boucler sur des directory
- Classic shell - Télécharger - Personnalisation
- Directory list & print - Télécharger - Divers Utilitaires
- Directory opus - Télécharger - Gestion de fichiers
- Les services d'annuaire active directory sont actuellement indisponibles - Forum Windows 8 / 8.1
- Installation directory - Forum Logiciels
3 réponses
Salut,
Une façon de faire :
;-))
Une façon de faire :
$ cat liste.txt
Repertoire_1
Repertoire_2
Repertoire_Toto
Repertoire_Jacques
Repertoire_5
$ while read i; do echo "Répertoire : ${i}"; done < liste.txt
Répertoire : Repertoire_1
Répertoire : Repertoire_2
Répertoire : Repertoire_Toto
Répertoire : Repertoire_Jacques
Répertoire : Repertoire_5
;-))
Ok !!
Bon, je suis un boulet ... et j'ai compris que le shell c'est quand même bien particulier !!
Donc en gros mon script va ressembler à ça ? :
Bon, je suis un boulet ... et j'ai compris que le shell c'est quand même bien particulier !!
Donc en gros mon script va ressembler à ça ? :
#!/bin/bash #script de parcours de repertoire : $ cat liste.txt Repertoire_1 Repertoire_2 Repertoire_Toto Repertoire_Jacques Repertoire_5 $ while read i; do cd ${i} echo "je suis dans le repertoire :" pwd Mon_Traitement cd .. done < liste.txt
Hey hey !! ça marche pô
J'execute mon script :
bash New_Laucher.sh
Et j'ai les erreurs suivantes !
T'as une idée ?
#!/bin/bash #script de parcours de repertoire : $ cat liste.txt Repertoire_1 Repertoire_2 Repertoire_Toto Repertoire_Jacques Repertoire_5 $ while read i; do cd ${i} echo "je suis dans le repertoire :" pwd cd .. done < liste.txt
J'execute mon script :
bash New_Laucher.sh
Et j'ai les erreurs suivantes !
New_Laucher.sh: ligne 4: $ : commande introuvable New_Laucher.sh: ligne 5: Repertoire_1 : est un dossier New_Laucher.sh: ligne 6: Repertoire_2 : est un dossier New_Laucher.sh: ligne 7: Repertoire_Toto : est un dossier New_Laucher.sh: ligne 8: Repertoire_Jacques : est un dossier New_Laucher.sh: ligne 9: Repertoire_5 : est un dossier New_Laucher.sh: ligne 12: erreur de syntaxe près du symbole inattendu « do » New_Laucher.sh: ligne 12: `$ while read i; do'
T'as une idée ?
Salut,
Dans l'exemple donné, le "$" symbolise le prompt, et de ce fait n'est pas a tapé dans ton script ;-\
Sans compter que la commande
Dans l'exemple donné, le "$" symbolise le prompt, et de ce fait n'est pas a tapé dans ton script ;-\
#!/bin/bash #script de parcours de repertoire : cat liste.txt Repertoire_1 Repertoire_2 Repertoire_Toto Repertoire_Jacques Repertoire_5 while read i; do cd ${i} echo "je suis dans le repertoire :" pwd cd .. done < liste.txt
Sans compter que la commande
cat liste.txtn'est là que pour montrer le contenu du fichier, donc elle n'est pas indispensable dans ton script ;-)
#!/bin/bash #script de parcours de repertoire : while read i; do cd ${i} echo "je suis dans le repertoire :" pwd cd .. done < liste.txt
Bon ok.
ça marche, mais tu avais mal expliqué !!
(Je plaisante bien sur ... Mais je t'avais pourtant dis que j'étais un boulet !!
Fallait p't'être préciser gros gros boulet...)
Donc en gros ...
j'ai crée un fichier avec :
dedans j'y ai écrit :
ensuite j'ai fais un script shell :
Dedans j'y ai mis :
je l’exécute
Et j'ai bien eu le résultat :
Voila !
Merci tout le monde
ça marche, mais tu avais mal expliqué !!
(Je plaisante bien sur ... Mais je t'avais pourtant dis que j'étais un boulet !!
Fallait p't'être préciser gros gros boulet...)
Donc en gros ...
$, ça c'est le prompteur, il faut pas l'écrire dans le script.
j'ai crée un fichier avec :
touch liste.txt
dedans j'y ai écrit :
Repertoire_1
Repertoire_2
Repertoire_Toto
Repertoire_Jacques
Repertoire_5
ensuite j'ai fais un script shell :
touch Laucher.sh
Dedans j'y ai mis :
while read i; do
cd ${i}
echo "je suis dans le repertoire :"
pwd
cd ..
done < liste.txt
je l’exécute
bash Laucher.sh:
Et j'ai bien eu le résultat :
je suis dans le repertoire :
Repertoire_1
je suis dans le repertoire :
Repertoire_2
je suis dans le repertoire :
Repertoire_Toto
je suis dans le repertoire :
Repertoire_Jacques
je suis dans le repertoire :
Repertoire_5
Voila !
Merci tout le monde
Question subsidiaire :
j'ai bien ma liste de fichier dans liste.txt :
j'arrive bien à parcourir cette liste grace à la commande :
D'où ma question :
Existe-t-il un moyen de sauter une des lignes de ma liste, par exemple en commentant une ligne : Est-ce qu'il est possible de faire quelque chose qui ressemblerai à ça par exemple ?
j'ai bien ma liste de fichier dans liste.txt :
Repertoire_1
Repertoire_2
Repertoire_Toto
Repertoire_Jacques
Repertoire_5
j'arrive bien à parcourir cette liste grace à la commande :
$ while read i; do echo "Répertoire : ${i}"; done < liste.txt
D'où ma question :
Existe-t-il un moyen de sauter une des lignes de ma liste, par exemple en commentant une ligne : Est-ce qu'il est possible de faire quelque chose qui ressemblerai à ça par exemple ?
Repertoire_1 Repertoire_2 #Repertoire_Toto Repertoire_Jacques Repertoire_5
Oui, mais il faudra rajouter une condition avant de traiter chaque ligne.
Par exemple tester que la ligne ne commence pas par un croisillon pour appliquer la commande qui suit.
Où supprimer lesdites lignes (celles commentées) de la lecture du fichier (avec sed par exemple) :
Par exemple tester que la ligne ne commence pas par un croisillon pour appliquer la commande qui suit.
Où supprimer lesdites lignes (celles commentées) de la lecture du fichier (avec sed par exemple) :
$ while read i; do echo "Répertoire : ${i}"; done < <(sed '/^#/d' liste.txt)
Répertoire : Repertoire_1
Répertoire : Repertoire_2
Répertoire : Repertoire_Jacques
Répertoire : Repertoire_5