Rechercher : dans
Par :

Fonction IF + nom de fichier

Dernière réponse le 5 mar 2009 à 10:37:34 snow_frog, le 4 mar 2009 à 19:30:04 
 Signaler ce message aux modérateurs

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)

Meilleures réponses pour « fonction IF + nom de fichier » dans :
Renommer plusieurs fichiers en batch VoirLe fait de renommer un grand nombre de fichiers peut très vite devenir fastidieux. Heureusement, il existe des outils permettant d'automatiser cette tâche dans un grand nombre de cas : Fonctionnalités natives Utilisation d'un programme...
Lire les sous-titres VoirCertains films possèdent des sous-titres dans un fichier à part, possédant généralement l'extension .srt, .ssa ou .sub. Le plus simple pour lire les sous-titres est de renommer le fichier de sous-titres comme le fichier vidéo (à l'exception de...
UNIX - Les fichiers VoirIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de...
FAT16 et FAT32 VoirLe système de fichier FAT16 Le premier système de fichier ayant été utilisé sur un système d’exploitation Microsoft est le système FAT, qui utilise une table d’allocation de fichiers (en anglais FAT, File Allocation Table). La table d’allocation de...
Javascript - Implantation du code VoirA quel emplacement insérer le Javascript dans votre page HTML Il existe plusieurs façons d'inclure du JavaScript dans une page HTML : Grâce à la balise En mettant le code dans un fichier Grâce aux événements Dans la balise...

1

jipicy, le 4 mar 2009 à 20:12:14

Salut,

est-ce possible de chercher une chaine de caractere dans un fichier,
Dans le nom du fichier ou dans son contenu ?
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

snow_frog, le 4 mar 2009 à 20:32:20

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

Répondre à snow_frog

3

jipicy, le 5 mar 2009 à 07:44:41

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]$
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

4

snow_frog, le 5 mar 2009 à 07:54:43

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

Répondre à snow_frog

5

gnublin, le 5 mar 2009 à 09:08:45

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
grep is your friend !

Répondre à gnublin

6

jipicy, le 5 mar 2009 à 09:48:58
  • +1

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$
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

7

 snow_frog, le 5 mar 2009 à 10:37:34

Merci beaucoup.
Je passe en résolu

Répondre à snow_frog
Collection CommentÇaMarche.net