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 :

find -exec et fonction


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut find -exec et fonction
    Bonjour

    Voilà j'ai créé une fonction comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nicesrm () {
    nice -n 19 srm -r
    ...
    }
    et elle fonctionne car lorsque je lance dans un script nicesrm /monréperoiteaeffacer cela s'efface bien

    Maintenant je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / -type f -name "*.log" -exec srm
    cela m'efface bien les fichier log de ma racine.

    MAIS si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / -type f -name "*.log" -exec nicesrm
    et bien là cela ne marche pas.

    Donc question: Est il possible d'introduire une "fonction créée" dans une fonction qui possède une fonction -exec?

    Merci

  2. #2
    Membre émérite
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Par défaut
    Yoyop,

    ta fonction est définie dans un script non ? et ton find est-il dans le même script ou directement dans ton shell ?

    Cordialement,

    Ex-Fiki

  3. #3
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    Salut

    et merci de répondre.

    Dans un script que j'ai appelé nettoyage.sh j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ....
     
    nicesrm () {
    nice -n 19 srm -r
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nicesrm /home/moi/repertoire1/*
    <== pour effacer le contenu de répertoire 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nicesrm /home/moi/repertoire2/*
    <== pour effacer le contenu de répertoire 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / -type f -name "*.log" -exec nicesrm
    <== pour virer les log de ma racine


    ...

    Alors -exec srm fonctionne mais pas -exec nicesrm

    C'est surtout pour apprendre à utiliser les fonctions que je m'amuse à faire des scripts

    Merci de l'aide

  4. #4
    Membre émérite
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Par défaut
    Donc tu as deux possibilités:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / -type f -name "*.log" | while read i ; do nicesrm "$i" ; done
    Si tu veux vraiment utilisé -exec

    tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / -type f -name "*.log" -exec /path/to/my_script.sh {} \;
    avec my_script.sh qui contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    nicesrm () {
    nice -n 19 srm -r
    ...
    } 
     
    nicesrm $1
    L'option -exec ne permet d'appeler qu'une commande et non pas une fonction :/ Désolé pour toi

    ++

    Ex-Fiki

    /edit: parcontre établi une limite de profondeur, sinon tu vas virer tous les logs de ta machine :p

  5. #5
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    ok merci j'ai compris

    Je vais faire les exercices sur ce site

    @

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

Discussions similaires

  1. [XL-2010] utilisation de Find dans une fonction perso
    Par luca.donati dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/11/2012, 14h13
  2. commande find -exec fonction ?
    Par slig_80 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 03/12/2010, 01h39
  3. Syntaxe du find -exec if !
    Par flyxter dans le forum Linux
    Réponses: 5
    Dernier message: 16/04/2010, 17h16
  4. 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
  5. at, nohup, find -exec et gcc
    Par dot-_-net dans le forum Ubuntu
    Réponses: 2
    Dernier message: 18/04/2008, 11h55

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