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 13/10/2011, 08h59   #1
Invité de passage
 
Homme
amateur
Inscription : 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
Points : 1
Points : 1
Par défaut find -exec et fonction

Bonjour

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

Code :
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 :
find / -type f -name "*.log" -exec srm
cela m'efface bien les fichier log de ma racine.

MAIS si je fais :

Code :
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
benoitor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 09h14   #2
Membre chevronné
 
Avatar de f-k-z
 
Homme K-Z. F.
Ingénieur sécurité
Inscription : juin 2006
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme K-Z. F.
Âge : 27
Localisation : France, Var (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2006
Messages : 393
Points : 675
Points : 675
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
__________________
GNU/Linux c'est une question de VI ou de MORE.
http://www.goodbye-microsoft.com
"Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
Le tag et la ne sont pas fait que pour le décor, pensez-y !
R.I.P. F-k-z 13/06/2006 - 12/10/2011
*Linux est convivial, il est juste très sélectifs pour ses amis.
f-k-z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 09h27   #3
Invité de passage
 
Homme
amateur
Inscription : 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
Points : 1
Points : 1
Salut

et merci de répondre.

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

Code :
1
2
3
4
5
6
....
 
nicesrm () {
nice -n 19 srm -r
...
}
Code :
nicesrm /home/moi/repertoire1/*
<== pour effacer le contenu de répertoire 1
Code :
nicesrm /home/moi/repertoire2/*
<== pour effacer le contenu de répertoire 2

Code :
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
benoitor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 10h15   #4
Membre chevronné
 
Avatar de f-k-z
 
Homme K-Z. F.
Ingénieur sécurité
Inscription : juin 2006
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme K-Z. F.
Âge : 27
Localisation : France, Var (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2006
Messages : 393
Points : 675
Points : 675
Donc tu as deux possibilités:

Code :
find / -type f -name "*.log" | while read i ; do nicesrm "$i" ; done
Si tu veux vraiment utilisé -exec

tu fais:
Code :
find / -type f -name "*.log" -exec /path/to/my_script.sh {} \;
avec my_script.sh qui contient
Code :
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
__________________
GNU/Linux c'est une question de VI ou de MORE.
http://www.goodbye-microsoft.com
"Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
Le tag et la ne sont pas fait que pour le décor, pensez-y !
R.I.P. F-k-z 13/06/2006 - 12/10/2011
*Linux est convivial, il est juste très sélectifs pour ses amis.
f-k-z est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/10/2011, 10h22   #5
Invité de passage
 
Homme
amateur
Inscription : 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
Points : 1
Points : 1
ok merci j'ai compris

Je vais faire les exercices sur ce site

@
benoitor 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 04h55.


 
 
 
 
Partenaires

Hébergement Web