Fonction IF + nom de fichier

Résolu
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
Configuration: Kubuntu 8.04
Konqueror 3.5 (bien qu'il y ai des bugs réguliers)

7 réponses

  1. Modérateur
    Salut,

    est-ce possible de chercher une chaine de caractere dans un fichier,
    Dans le nom du fichier ou dans son contenu ?
    0
    1. 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
      1. Modérateur
        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
        1. 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
          1. 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
            1. Modérateur
              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
              1. merci beaucoup.
                Je passe en résolu
                0