Shell, boucler sur des directory
Résolu/Fermé
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
-
1 déc. 2017 à 09:59
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 - 5 déc. 2017 à 07:44
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 - 5 déc. 2017 à 07:44
A voir également:
- Shell, boucler sur des directory
- Directory list & print - Télécharger - Divers Utilitaires
- Classic shell windows 11 - Télécharger - Personnalisation
- Directory opus - Télécharger - Gestion de fichiers
- Le service dhcp n'a pas pu contacter active directory ✓ - Forum DHCP
- Efi shell version 2.50 - Forum Windows 10
3 réponses
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
1 déc. 2017 à 10:39
1 déc. 2017 à 10:39
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
;-))
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
1 déc. 2017 à 11:34
1 déc. 2017 à 11:34
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
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
1 déc. 2017 à 12:24
1 déc. 2017 à 12:24
Oui. A condition toutefois que les répertoires listés soient tous présents dans le répertoire d'où est lancé le script.
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
1 déc. 2017 à 16:31
1 déc. 2017 à 16:31
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 ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
1 déc. 2017 à 16:47
1 déc. 2017 à 16:47
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
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
1 déc. 2017 à 16:58
1 déc. 2017 à 16:58
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
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
>
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
1 déc. 2017 à 21:43
1 déc. 2017 à 21:43
Merci. Je viens de voir ton post.
Super. Merci à vous deux.
Je clos le sujet !
Bon WE.
Super. Merci à vous deux.
Je clos le sujet !
Bon WE.
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
>
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
4 déc. 2017 à 13:59
4 déc. 2017 à 13:59
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
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
>
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
4 déc. 2017 à 14:06
4 déc. 2017 à 14:06
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