Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 23h25   #1
Invité régulier
 
Inscription : décembre 2010
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 31
Points : 5
Points : 5
Par défaut commande find -exec fonction ?

Bonjour à tous,

Je suis en train de réaliser un script et mon soucis est que quand je fais ça :

Code :
1
2
function maFonction(){ .... }
find [répertoire] * .java -exec maFonction \;
Il n'a pas l'air d'être hyper fan... On ne peut pas faire un truc du style ?
slig_80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 23h40   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Code :
1
2
 
find ARG -exec function {} \;
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 23h51   #3
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 059
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 059
Points : 4 115
Points : 4 115
Bonsoir,

Tout d'abord, est-ce que sans utiliser -exec tu récupères bien tous les fichiers que tu souhaites ?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 23h52   #4
Invité régulier
 
Inscription : décembre 2010
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 31
Points : 5
Points : 5
Becket :

Tout d'abord, merci pour ta réponse.
Mais euh, désolé, je ne suis pas du tout un pro en shell...

Qu'entends-tu par ARG ? (j'ai soudainement l'impression d'être un boulet ^^)

N_BaH :


Oui, oui. Sans le -exec tout va bien.
slig_80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 00h00   #5
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Par ARG, j'entend, les arguments que tu passes à find

Code :
1
2
find / -name "*jpg*" -type f 
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/12/2010, 00h15   #6
Invité régulier
 
Inscription : décembre 2010
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 31
Points : 5
Points : 5
Autant pour moi, voilà mon code :

Code :
1
2
 
find [repertoire] -name "*.java" -exec maFonction \;
slig_80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 00h40   #7
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 059
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 059
Points : 4 115
Points : 4 115
find ne sait pas utiliser les fonctions du shell !
Code bash :
1
2
3
maFonction() { echo "$@"; }
export -f maFonction
find [repertoire] -name "*.java" -exec bash -c 'maFonction $1' _ {} \;
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/12/2010, 01h18   #8
Invité régulier
 
Inscription : décembre 2010
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 31
Points : 5
Points : 5
Joli, ça marche
Tout d'abord, merci !

Par contre, j'aimerais comprendre :

T'as rendu maFonction globale, ok.
Par contre,

Citation:
-exec bash -c 'maFonction $1' _ {}
y'a moyen d'expliquer un peu bash -c et le $1 ? ^^
slig_80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 01h33   #9
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 059
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 059
Points : 4 115
Points : 4 115
Citation:
Envoyé par man bash
-c chaîne Si l'option -c est présente, les commandes sont lues depuis la chaîne fournie. S'il y a des arguments
après la chaîne, ils sont affectés aux paramètres positionnels, en commençant par $0.
mais il est un peu perturbant d'utiliser $0, donc on place un soulignement (ou autrechose) avant le nom du fichier renvoyer par find, qui, lui, deviendra le deuxième paramètre et sera donc affecté à $1.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/12/2010, 01h39   #10
Invité régulier
 
Inscription : décembre 2010
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 31
Points : 5
Points : 5
Ok
Et ben j'aurais pas trouver tout seul ^^

Encore merci donc et bonne nuit !
slig_80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h35.


 
 
 
 
Partenaires

Hébergement Web