Script shell test expression reguliere

Résolu/Fermé
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 - 16 mars 2011 à 14:15
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 16 mars 2011 à 16:55
Bonjour,

Je suis en train de faire un petit script qui doit me permettre de ne traiter que des fichiers respectant une syntaxe bien précise. Pour les fichiers qui ne respectent pas cette syntaxe je ne veux pas les traiter.
J'ai réussi à faire l'expression régulière mais je bloque pour la condition. Je ne comprends pas comment dire si le nom fichier correspond à l'expression régulière alors instruction 1 sinon erreur

Mon code est le suivant :

REGEXP="[[:alpha:]]{2}[[:digit:]]+\.[jpg]"

cd monRep
	
	# Renommage des fichiers
	
    for photo in 'ls *.jpg'
    do
       	trouve="$photo" | egrep "$REGEXP" //je renvoie le nom de la photo a egrep qui l'analyse avec l'expression régulière 
       	if [ $? -eq 0 ]; then  // c'est ici que je bloque je voudrais dire SI $photo correspond à la syntaxe de $REGEXP
            
            else
              "erreur"
            fi


J'ai essayé
	if [ ${photo} = ${REGEXP} ]; then 

mais sans sucées.

Je vous remercia d'avance pour vos réponses.

A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
16 mars 2011 à 14:27
Salut,

En gras les modifs :

REGEXP="^[[:alpha:]]{2}[[:digit:]]+\.jpg"

cd monRep
	
	# Renommage des fichiers
	
    for photo in *.jpg
    do
       	egrep "$REGEXP" <<<"${photo}"
       	if [ $? -eq 0 ]; then 
       ...            
            else
              "erreur"
            fi

;-))
0
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 4
16 mars 2011 à 16:45
Merci de ta réponse zipe31.

Cependant j'ai essayé ta méthode et ça ne fonctionnais pas.

Par contre en faisant

if [ ""'echo $photo | egrep $REGEXP' = "$photo" ]; then


ça fonctionne !
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
16 mars 2011 à 16:55
Bizarre ;-((

$ ls -1                                                   
123abc.jog 
33ml.jpg
ab123.jpg
abc1.jpg
foo.sh
lk2568.jpg
mp2.png

$ cat foo.sh
#! /bin/bash

REGEXP="^[[:alpha:]]{2}[[:digit:]]+\.jpg"

    for photo in *.jpg
    do
        egrep "$REGEXP" <<<"${photo}"
        if [ $? -eq 0 ]; then
        echo "${photo} est bonne"
        else
        echo "${photo} n'est pas bonne"
        fi
    done

$ ./foo.sh
33ml.jpg n'est pas bonne
ab123.jpg
ab123.jpg est bonne
abc1.jpg n'est pas bonne
lk2568.jpg
lk2568.jpg est bonne


;-)
0