Comment tester si FIND renvoi quelques choses [RESOLU] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 19-02-2003 à 16:25:47
un chtit exemple :
find $CDROM -iname *.mpg -or -iname *.mpeg -or -iname *.avi -or -iname *.divx -or -iname *.asf -or -iname *.wmv -or -iname *.mov -or -iname *.dat > /tmp/video.pls |
Marsh Posté le 19-02-2003 à 16:32:16
la tu test $?
a koi correspond $? ???
Marsh Posté le 19-02-2003 à 16:42:40
olicel a écrit : la tu test $? |
C'est la valeur de retour de la derniere commande executée
(ici le grep)
Marsh Posté le 19-02-2003 à 16:43:35
le message de sortie du prog, habituellement 0 quand ya pas de pb et 1 (ou +) si il y a une erreur.
je fais la même chose pour mon script de sauvegarde ( cf mon site )
Marsh Posté le 19-02-2003 à 16:46:40
ok merci
ca marche pour l'instant
Marsh Posté le 27-02-2003 à 09:11:02
bon les gars je reviens avec mon truc
voila ce que j'ai fait :
find $1 -name *.MP3 > test.txt |
Bon et bien sur si je suis ici c'est que ca ne marche pas.
LE test if($? !=0) retourne toujours dans la boucle else et m'affiche le message "pas trouvé". en plus il m'affiche ceci :
recherche_fichier: 0:command not found |
recherche_fichier c'est le nom de mon script
olivier
Marsh Posté le 27-02-2003 à 09:45:51
ben il me sort une erreur :
recherche_fichier: [: missing ']'
Marsh Posté le 27-02-2003 à 09:57:52
mon script maintenant
find $1 -name *.MP3 |
Bon la il me dit plus missing ] ... desole pour cette erreur debile :-(
PAr contre il ne rentre jamais dans ma boucle "trouve", alors que find me renvoi bien un fichier.
Mais si j'ai bien compris, on test la valeur retourner par find, mais comment savoir ce que find renvoi lorsqu'il trouve quelques choses ou ne toruve rien ??? j'ai cherche en man fin, mais rien sur ce sujet :-(
Je pourrais pas faire ca plutot ?
find $1 -name *.MP3 > fichier.txt |
keskon mettrait alors dans le IF ?
olivier
Marsh Posté le 27-02-2003 à 10:08:48
man test
tu as plein de test différents dont entre autre celui du fichier vide.
en plus, tu peux les abréger :
|
correspond à : teste si le fichier /dev/dvd existe (équivalent à test -e )
Marsh Posté le 27-02-2003 à 10:09:51
C'est parce que find ne renvoit rien je crois...
C'est pour ca que dans mon script je fait un grep, qui lui m'indique si le fichier est vide ou pas...
Marsh Posté le 27-02-2003 à 10:13:24
Je confirme pour le retour du find, extrait du man :
|
Marsh Posté le 27-02-2003 à 10:16:57
Au fait, utilise plutot 'find -iname' si tu veux pas t'emmerder avec la casse (*.mp3, *.MP3, etc.).
Ton script c'est pour verifier que tes utilisateurs ils telechargent pas trop de betises ? C'est ca ?
Marsh Posté le 27-02-2003 à 10:23:23
olicel a écrit :
|
tu fais
if [ -s test.txt ] |
qui te retourneras une erreur si ton fichier n'existe pas ou a une taille nulle
Marsh Posté le 27-02-2003 à 10:59:55
ok merci a tous, ca marche nickel maintenant... mais j'ai encore beaucoup de chemin a faire avec les scripts...
Effectivement c'est pour verifier que mes users ne telecharge pas trop de betise, fichier MP3,AVI et MPG.
Mon linux sert de serveur de fichier ;-)
encore merci
olivier
Marsh Posté le 27-02-2003 à 11:49:52
plutot que de passer par un fichier temporaire (ce qui n'est pas toujours possible, imagine que tu lance ton script dans un repertoire ou tu n'as pas les droits d'ecriture ), tu peux aussi faire qqchose de ce style :
Code :
|
Marsh Posté le 27-02-2003 à 12:27:47
a oui c une solution aussi.
Mais niveau droit d'ecriture ... ca devrait aller
Marsh Posté le 19-02-2003 à 16:23:21
salut,
J'aimerais bien faire un
SI("find -name *toto*" ne trouve rien)
ALORS ...
SINON ...
Comment faire ??
suis pas tres fort en script
Message édité par olicel le 27-02-2003 à 11:04:18
---------------
toujours un petit mot gentil: