Easy bash linux, une ligne mais c'est loin dans ma tête..

Easy bash linux, une ligne mais c'est loin dans ma tête.. - Shell/Batch - Programmation

Marsh Posté le 11-04-2008 à 15:09:18    

Bonjour à tous et à tous,
 
 
Je dois chercher un fichier dans une arborescence, des que je trouve ce fichier, je dois aller à l'emplacement (faire un cd) et executer le fichier. Et ceci pour tous les fichiers que je trouve.
 
find ./ -name 'all2png.sh' | cd (la je voudrais le repertoire du fichier).... | exec ./all2png.sh \;
 
Comment recuperer uniquement le chemin des fichiers trouvés et le passer en parametre de la commande cd?
Merci
 
 
ps: je ne peux pas executer directement ./bruit/seuil_bruit/all2png.sh car all2png utilise un chemin relatif par rapport à lui même : ./vxi/ par exemple est un répertoire se trouvant au meme endroit que all2png. En esperant etre assez clair pour me faire comprendre.
 
la sortie de find ./ -name 'all2png.sh'  :

./bruit/bruit/all2png.sh
./bruit/seuil_bruit/all2png.sh
./deformation/forte/all2png.sh
./deformation/faible/all2png.sh
./nombre_img/eleve/all2png.sh
./nombre_img/faible/all2png.sh
./nombre_img/normal/all2png.sh
./nombre_img/AAfaible/all2png.sh
./lumiere/faible/all2png.sh
./lumiere/forte/all2png.sh
./lumiere/seuil/all2png.sh
./orientation/face/all2png.sh
./orientation/gauche/all2png.sh
./orientation/mixte/all2png.sh
./position/profondeur/seuil/all2png.sh
./position/profondeur/normal/all2png.sh
./position/profondeur/proche/all2png.sh
./position/zone/bas/all2png.sh


Message édité par jijiz le 11-04-2008 à 15:15:39
Reply

Marsh Posté le 11-04-2008 à 15:09:18   

Reply

Marsh Posté le 11-04-2008 à 15:55:40    

No Garanty !
 
Peut-être un  
-exec cd {} \;  
 
teste avant avec
=>
-exec ls -l {} \;


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 11-04-2008 à 16:01:27    

A essayer :

find $PWD -name 'all2png.sh' -printf "cd %h; ./%f\n" | sh


 
Jean-Pierre.

Message cité 1 fois
Message édité par aigles le 11-04-2008 à 16:01:43
Reply

Marsh Posté le 11-04-2008 à 16:02:17    

heu, ca fait quoi normalement cd {} ?
Dois je tester comme cela :  
 
find ./ -name 'all2png.sh' | exec cd {} \;  | exec ./all2png.sh \;
 
Merde j'ai tout perdu en programmation système alors qu'à l'iut j'en ai bouffé des tones... il y a 3 ans.

Reply

Marsh Posté le 11-04-2008 à 16:04:50    

aigles a écrit :

A essayer :

find $PWD -name 'all2png.sh' -printf "cd %h; ./%f\n" | sh


 
Jean-Pierre.


 
 
Tu roxxes si je peux me permettre ^^
 
Je viens de gagner quelques heures.
 
 
j'aimerais bien comprendre,  
que stocke la variable %h et %f?
que fait la commande sh?
comment sont passés les parametres du find vers le cd?
 
Merci encore.

Reply

Marsh Posté le 11-04-2008 à 16:09:29    

Ah excuse  ...moi aussi j'utilise from time to time ;-)
 
Commande par exemple pour lister les fichiers démarrant par ABC*
=>
find . -type f -name "ABC*" -exec ls -l {} \;
 
Pour changer de repertoire , faut adapter sans doute le "ls -l" !?


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 11-04-2008 à 17:00:19    

jijiz a écrit :


 
 
Tu roxxes si je peux me permettre ^^
 
Je viens de gagner quelques heures.
 
 
j'aimerais bien comprendre,  
que stocke la variable %h et %f?
que fait la commande sh?
comment sont passés les parametres du find vers le cd?
 
Merci encore.


 
Extrait du man de la commande find :

-printf format
. . .  
%f     File's  name with any leading directories removed (only the last ele-
       ment).
 
%h     Leading  directories  of  file's name (all but the last element).  If
       the file name contains no slashes (since it is in the current  direc-
       tory) the %h specifier expands to ".".


La commande find affiche une ligne par chaque fichier 'all2png.sh' trouvé.
Cette ligne a le format suivant :

cd <repertoire du fichier>; ./all2png.sh


Tu peux examiner le résultat de la commande en supprimant le pipe vers sh
 
Le résultat du find est passé à un shell (pipe sh) qui va interpréter et exécuter ce qu'il reçoit en entrée, c'est à dire les commandes de cd et d'exécution du all2png.
 
Jean-Pierre.


Message édité par aigles le 11-04-2008 à 17:02:04
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed