Script shell test expression reguliere

Résolu
apprentiDev Messages postés 171 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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.

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. apprentiDev Messages postés 171 Statut Membre 4
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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