IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

commande find -exec fonction ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find ARG -exec function {} \;

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonsoir,

    Tout d'abord, est-ce que sans utiliser -exec tu récupères bien tous les fichiers que tu souhaites ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    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.

  5. #5
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Par ARG, j'entend, les arguments que tu passes à find

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    find / -name "*jpg*" -type f 

  6. #6
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Autant pour moi, voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find [repertoire] -name "*.java" -exec maFonction \;

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    find ne sait pas utiliser les fonctions du shell !
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maFonction() { echo "$@"; }
    export -f maFonction
    find [repertoire] -name "*.java" -exec bash -c 'maFonction $1' _ {} \;
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Joli, ça marche
    Tout d'abord, merci !

    Par contre, j'aimerais comprendre :

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

    -exec bash -c 'maFonction $1' _ {}
    y'a moyen d'expliquer un peu bash -c et le $1 ? ^^

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    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'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Ok
    Et ben j'aurais pas trouver tout seul ^^

    Encore merci donc et bonne nuit !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. find -exec et fonction
    Par benoitor dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 13/10/2011, 10h22
  2. Réponses: 0
    Dernier message: 14/09/2011, 16h27
  3. utilisation de {} dans find -exec et commandes imbriquées
    Par pitipoisson dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 07/09/2009, 11h56
  4. Commande d'une fonction exterieur
    Par 6su7 dans le forum C++
    Réponses: 16
    Dernier message: 13/02/2006, 14h53
  5. La commande find
    Par Invité4 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 22/03/2005, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo