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   -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    est-ce possible de chercher une chaine de caractere dans un fichier,
    Dans le nom du fichier ou dans son contenu ?
    0
  3. snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   139
     
    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
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   139
     
    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
  7. gnublin Messages postés 16 Statut Membre
     
    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
  8. snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   139
     
    merci beaucoup.
    Je passe en résolu
    0