Fonction IF + nom de fichier
Résolu
snow_frog
Messages postés
220
Statut
Membre
-
snow_frog Messages postés 220 Statut Membre -
snow_frog Messages postés 220 Statut Membre -
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
A voir également:
- Fonction IF + nom de fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fonction si et - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
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 ?
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
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
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