Problème avec un shell sous Unix

Fermé
Super Sniper - 3 sept. 2007 à 16:50
 Super Sniper - 4 sept. 2007 à 10:50
Bonjour à tous,

J'ai besoin d'aide.

Voilà le truc, j'ai un répertoire en local (TOTO), dans ce répertoire j'ai un nombre inconnu de sous-répertoires (LOT1, LOT2, LOT3, ...).
Dans chacun de ces sous-répertoires, j'ai 2 fichiers (LOT et FEUILLE). Je dois faire un traitement pour mettre en relation chaque fichier FEUILLE avec son fichier LOT qui lui correspond (je fais ça en Cobol, pas de souci).

J'ai besoin de faire un script qui va me récupérer tous les noms des répertoires, et qui ensuite va aller dans chaque répertoire pour lancer mon batch Cobol pour le traitement.

Pour le moment j'ai réussi à récupérer tous les noms de tous les répertoires et à les mettre dans un fichier essai.txt avec la commande :
ls -l | grep dr | cut -f2 -d : | cut -f2 -d ' ' > $HOME/trf/essai.txt

Mon fichier essai.txt contient donc :
LOT1
LOT2
LOT3

Maintenant il faut que dans mon script shell je lise ce fichier essai.txt, et que à chaque ligne lue, j'aille dans le répertoire correspondant pour exécuter mon batch, et c'est là qu'est le problème, je ne sais pas comment faire.
Je suppose que j'ai besoin de faire une boucle pour la lecture, mais je ne sais pas comment coder ça (je débute dans l'écriture de shell)

Quelqu'un peut-il m'aider?
Merci d'avance.
A voir également:

10 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
3 sept. 2007 à 17:03
0
J'avais déjà vu ça, mais je n'arrive pas à le faire marcher.

Lorsque j'utilise la boucle While telle qu'elle est marquée, mon fichier de sortie reste vide, et je ne comprend pas pourquoi.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
3 sept. 2007 à 17:30
Affiche ton script (la boucle du moins, mais le script en entier serait un plus).

Si tu pouvais aussi afficher l'arborescence du(es) répertoire(s) et son(leurs) contenu(s) ce serait encore mieux, du moins une partie histoire qu'on saisisse bien ce que tu veux. Je dis ça parce que ton histoire de récupération de nom de répertoire dans un fichier, si je comprend bien ton problème, je suis sur qu'il y a moyen de faire plus simple et plus direct...

;-))
0
Le script (pour le moment je teste, donc j'en suis au départ):

#! /bin/bash

cd ../trf
ls -l | grep dr | cut -f2 -d : | cut -f2 -d ' ' > $HOME/trf/essai.txt
while read line
do
echo -e "$line\n"
done < essai.txt

--------------------------------------------------------------------------------

L'arborescence des répertoires :

répertoire racine : $HOME/trf
contenu de $HOME/trf
LOT1
LOT2
LOT3

Chaque répertoire LOT contient 2 fichiers : LOT.TXT et FEUILLE.TXT
J'ai donc :
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT1
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT2
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT3

Le but étant par la suite de faire un traitement batch, donc dans la boucle While, si elle fonctionne, à la place du echo, je ferais un appel à mon batch pour effectué le traitement.

Voilà, j'espère que ça suffira.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
3 sept. 2007 à 19:06
find ../trf -type f -exec ton_batch {} \;
;-))
0
Merci pour ton aide.

Ca ne marche pas comme il faudrait, mais mon "responsable" me dit de laisser tomber pour ne pas perdre trop de temps là-dessus.
Donc je laisse tomber.

Le sujet peut être cloturé. Merci quand même.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
4 sept. 2007 à 10:08
pour ne pas perdre trop de temps là-dessus.
C'est dommage, je pense que la solution ne doit pas être loin...


Donc je laisse tomber.
C'est ton choix et je me répète, c'est dommage.

Ca ne marche pas comme il faudrait
Allez, vite fait, en deux mots, c'est quoi qui marche pas ?
As-tu des erreurs ? Si oui affiches-les.


Mais non j'insiste pô ;-))
0
Je suis bien d'accord avec toi, on est surement très prêt de la solution.

Si je laisse tomber, c'est que je n'ai pas le choix, je suis malheureusement payé pour éxecuter les ordres de mes chefs, et donc s'ils me disent : "Laisse tomber", je m'exécute.

Pour ce qui est des erreurs, je ne les ai malheureusement plus, on m'a dit de laisser tomber, donc j'ai arrêté là, mais de mémoire, en fait il trouvait "tous" les fichiers et dossiers, alors qu'il ne me fallait que les fichiers contenu dans les dossiers qui m'intéressaient, et donc après quand j'exécutais mon batch, il était perdu puisqu'il avait des trucs pas intéressants pour lui.

Voilà, Merci encore pour ton aide, je suis sûr qu'on aurait fini par y arriver, mais bon les chefs ont parlé, alors on exécute même si ça ne plaît pas ...
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
4 sept. 2007 à 10:36
en fait il trouvait "tous" les fichiers et dossiers, alors qu'il ne me fallait que les fichiers contenu dans les dossiers qui m'intéressaient,
Bizarre ;-\
Avec l'option "-type f" il est sensé ne trouver que les fichiers et pas les répertoires...

mais bon les chefs ont parlé, alors on exécute même si ça ne plaît pas ...
;-))

Bon courage.
0
Merci.
0