[RESOLU] Comment tester si FIND renvoi quelques choses

Comment tester si FIND renvoi quelques choses [RESOLU] - Codes et scripts - Linux et OS Alternatifs

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 :D


Message édité par olicel le 27-02-2003 à 11:04:18

---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 19-02-2003 à 16:23:21   

Reply

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
 
  # On verifie que la liste n'est pas vide parce que mplayer n'aime pas ca  # du tout du tout...
  grep \[:alnum:\] /tmp/video.pls > /dev/null
 
  if [ $? != 0 ]
  then
   echo "Aucun fichier video trouvé sur le media"
  else
   echo "Lancement de MPlayer"
   $MPLAYER -playlist /tmp/video.pls
  fi
   


Message édité par e_esprit le 19-02-2003 à 16:27:55
Reply

Marsh Posté le 19-02-2003 à 16:32:16    

la tu test $?
 
a koi correspond $?        ???


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 19-02-2003 à 16:42:40    

olicel a écrit :

la tu test $?
 
a koi correspond $?        ???


C'est la valeur de retour de la derniere commande executée
(ici le grep)

Reply

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 )


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 19-02-2003 à 16:46:40    

ok merci  :jap:  
ca marche pour l'instant :D


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 27-02-2003 à 09:11:02    

bon les gars je reviens avec mon truc :D
 
voila ce que j'ai fait :

find $1 -name *.MP3 > test.txt
if ($? != 0 )
then
echo "trouve"
cat test.txt|mail -s "fichier MP3 trouve" admin@chmanosque.fr
else
echo "pas trouve"
 
fi
exit


 
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


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 27-02-2003 à 09:24:48    

et avec des '[' ']' a la place des '(' ';)' ???

Reply

Marsh Posté le 27-02-2003 à 09:45:51    

ben il me sort une erreur :  
recherche_fichier: [: missing ']'
 
 :(


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 27-02-2003 à 09:47:37    

Avec des espaces, cf. mon exemple plus haut.

Reply

Marsh Posté le 27-02-2003 à 09:47:37   

Reply

Marsh Posté le 27-02-2003 à 09:57:52    

mon script maintenant
 

find $1 -name *.MP3
if [ $? != 0 ]
then
echo "trouve"
#cat test.txt|mail -s "fichier MP3 trouve" admin@chmanosque.fr
else
echo "pas trouve"
 
fi
exit


 
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
if [ fichier.txt est pas vide ]
then
echo "trouve"
#cat test.txt|mail -s "fichier MP3 trouve" admin@chmanosque.fr
else
echo "pas trouve"
 
fi
exit


 
keskon mettrait alors dans le IF ?
 
olivier


---------------
toujours un petit mot gentil:
Reply

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 :


if [ -e /dev/dvd ]; then exit 0  
else ln -s /dev/scd1 /dev/dvd
fi


 
correspond à : teste si le fichier /dev/dvd existe (équivalent à test -e )


Message édité par Mjules le 27-02-2003 à 10:09:14

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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...

Reply

Marsh Posté le 27-02-2003 à 10:13:24    

Je confirme pour le retour du find, extrait du man :


       find  se  termine  avec  le  code  de retour 0 si tous les
       fichiers ont pu être examinés correctement, et supérieur à
       0 si une erreur s'est produite.


Message édité par e_esprit le 27-02-2003 à 10:13:39
Reply

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 ? ;)

Reply

Marsh Posté le 27-02-2003 à 10:23:23    

olicel a écrit :


Je pourrais pas faire ca plutot ?  
 

find $1 -name *.MP3 > fichier.txt
if [ fichier.txt est pas vide ]
then
echo "trouve"
#cat test.txt|mail -s "fichier MP3 trouve" admin@chmanosque.fr
else
echo "pas trouve"
 
fi
exit


 
keskon mettrait alors dans le IF ?
olivier


 
tu fais

if [ -s test.txt ]


qui te retourneras une erreur si ton fichier n'existe pas ou a une taille nulle

Reply

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


---------------
toujours un petit mot gentil:
Reply

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 :D), tu peux aussi faire qqchose de ce style :

Code :
  1. NBFILE=`find . -name * | wc -l`
  2. if [ $NBFILE -gt 0 ]
  3. ...

Reply

Marsh Posté le 27-02-2003 à 12:27:47    

a oui c une solution aussi.  :whistle:
Mais niveau droit d'ecriture ... ca devrait aller :D


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 27-02-2003 à 12:50:56    

y a toujours /tmp !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed