Fonction IF + nom de fichier

Résolu/Fermé
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 - 4 mars 2009 à 19:30
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 - 5 mars 2009 à 10:37
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:
#!/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
A voir également:

7 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
5 mars 2009 à 09:48
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$
;-))
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
4 mars 2009 à 20:12
Salut,

est-ce possible de chercher une chaine de caractere dans un fichier,
Dans le nom du fichier ou dans son contenu ?
0
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
4 mars 2009 à 20:32
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
5 mars 2009 à 07:44
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]$
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
5 mars 2009 à 07:54
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
0
gnublin Messages postés 15 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 8 juillet 2009
5 mars 2009 à 09:08
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
0
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
5 mars 2009 à 10:37
merci beaucoup.
Je passe en résolu
0