Fonction IF + nom de fichier
Résolu
snow_frog
Messages postés
214
Date d'inscription
Statut
Membre
Dernière intervention
-
snow_frog Messages postés 214 Date d'inscription Statut Membre Dernière intervention -
snow_frog Messages postés 214 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voilà un petit morceau de script qui permet de lire un certain type de fichier présent dans le répertoire courant
fichiers présents dans répertoire courant:
petite_voiture_verte_vitesse.txt
grande_voiture_rouge_vitesse.txt
etc
voici une partie du script:
voilà, cette dernière partie de mon script pose problème:
est-ce possible de chercher une chaine de caractere dans un fichier, et SI cette chaine est présente afficher un message?
merci de votre aide
voilà un petit morceau de script qui permet de lire un certain type de fichier présent dans le répertoire courant
fichiers présents dans répertoire courant:
petite_voiture_verte_vitesse.txt
grande_voiture_rouge_vitesse.txt
etc
voici une partie du script:
#!/bin/bash
FILE=`ls *vitesse.txt` # fichiers contenants des relevés de vitesse pour une voiture verte, rouge etc
for i in $FILE
do
MAX=$(cut -d "," -f2 $i | (awk 'NR==1, NR==11 {print $2 }' $i) | sort -n | head -1)
MIN=$(cut -d "," -f2 $i | (awk 'NR==1, NR==11 {print $2 }' $i) | sort -n -r | head -1)
if $i contient *_verte_vitesse.txt"
then
echo "vitesse voiture verte "
fi
...
done
voilà, cette dernière partie de mon script pose problème:
est-ce possible de chercher une chaine de caractere dans un fichier, et SI cette chaine est présente afficher un message?
merci de votre aide
Configuration: Kubuntu 8.04 Konqueror 3.5 (bien qu'il y ai des bugs réguliers)
7 réponses
-
jp@MDK:~/tmpfs ssh$ ls -1 *.txt tatatatata_bleu_vitesse.txt tatatatata_vert_vitesse.txt titi_bleu_vitesse.txt titi_jaune_vitesse.txt tototo_rouge_vitesse.txt tototo_vert_vitesse.txt jp@MDK:~/tmpfs ssh$ ./foo.sh Pour le fichier tatatatata_bleu_vitesse.txt la couleur est : bleu Pour le fichier tatatatata_vert_vitesse.txt la couleur est : vert Pour le fichier titi_bleu_vitesse.txt la couleur est : bleu Pour le fichier titi_jaune_vitesse.txt la couleur est : jaune Pour le fichier tototo_rouge_vitesse.txt la couleur est : rouge Pour le fichier tototo_vert_vitesse.txt la couleur est : vert jp@MDK:~/tmpfs ssh$ cat foo.sh #! /bin/sh #set -xv for i in *.txt do couleur=$(grep -o "_.*_" <<<$i 2>/dev/null) echo "Pour le fichier $i la couleur est : ${couleur//_}" done jp@MDK:~/tmpfs ssh$;-))
-
Salut,
est-ce possible de chercher une chaine de caractere dans un fichier,
Dans le nom du fichier ou dans son contenu ?
-
désolé de ne pas avir précisé, dans le nom de fichier,
par exemple:
tatatatata_vert_vitesse.txt
tututututu_vert_vitesse.txt
titititititititi_vert_vitesse.txt
tatatatata_rouge_vitesse.txt
...
je voudrais chercher si dans le nom de fichier il y a "vert" afficher vert
merci -
Utilises grep pour ça :
[tmpfs]$ ls -1 tatatatata_bleu_vitesse.txt tatatatata_vert_vitesse.txt titi_bleu_vitesse.txt tototo_rouge_vitesse.txt tototo_vert_vitesse.txt [tmpfs]$ ls -1 | grep vert tatatatata_vert_vitesse.txt tototo_vert_vitesse.txt [tmpfs]$
;-))
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
merci pour grep, mais comment l'integrer dans ma fonction if:
au début de mon script j'ai:
FILE=`ls *vitesse.txt`
[...] une boucle for I in $FILE
do
[...] $$i
done
(en expression ecrite car je ne voit pas la commande à mettre)
if $i contient vert
then
echo "vert"
fi
comment transcrire ce "contient" ? if [$i= ls -l | grep vert]
en fait mon but final est que le script affiche vert, rouge en fonction du fichier qu'il traite dans la boucle for -
Un truc du genre :
VARIABLE=$(ls * | grep )
if [ $VARIABLE==vert ]
then
echo -e "vert \n"
fi
je pense que c'est pas trop mal comme ca
-
merci beaucoup.
Je passe en résolu