C´est très technique pour un débutant, mais tu sembles capable d´écrire "expressions régulières" sans te tromper, alors on va dire que tu sais faire. Note : moi je suis pas étudiant (d´ailleurs t´étudies où pour faire des trucs si sympas ?) et je peux me tromper.
Commençons par le plus simple : la syntaxe d´utilisation de expr. Elle est de la forme
expr phrase : recherche
où recherche est une regexp (ça tombe plutôt bien).
Ensuite, il faut savoir ce que nous cherchons : un pwin ("."). Seulement, tu n´ignores pas que le point a une valeur particulière dans les expressions régulière : il signifie n´importe quel caractère. Ainsi si nous faisons
minipingouin:~ poulet$ expr maison.jpg : ´.´
1
expr va renvoyer l´emplacement (à partir de 1 et pas de zéro) du premier caractère qu´il trouvera. Ce qui ne nous intéresse pas.
Nous devons donc faire comprendre à expr que nous ne cherchons pas un caractère n´importe lequel, mais bien un point ("."). Tu connais surement ça, il faut l´échapper à l´aide du caractère \, ce qui nous donne
minipingouin:~ poulet$ expr maison.jpg : ´\.´
0
Naturellement ce n´est pas fini. Il faut faire comprendre à expr que le point en question peut être précédé par d´autres caractères : en plaçant un autre point, suivi d´un astérisque * (pour dire qu´il peut y´en avoir un, deux, zéro ou plusieurs)
minipingouin:~ poulet$ expr maison.jpg : ´.*\.´
7
Et là expr nous renvoie la position du point. Tu peux compter, il a bon.
C´est important que tu aies compris jusqu´ici. Maintenant voyons ce qui a du te bloquer (man expr la prochaine fois) : on veut que expr nous renvoie une phrase, pas un emplacement. Pour cela, il faut utiliser une commande spéciale que tu verras en temps et en heure dans les expressions régulières : \(...\) où les ... sont ce que tu veux.
Elle a diverses utilités, ici elle va simplement faire afficher "maison". Ici, c´est le texte entre les \( et \) qui va être affiché.
minipingouin:~ poulet$ expr maison.jpg : ´\(.*\)\.´
maison
Compris ? Si jamais il te manque un truc, n´hésite pas à redemander.
Pour t´entraîner, tu peux chercher à faire d´autres expressions :
- pour gérer les noms de fichiers commençant par un .
- pour gérer les noms de fichiers contenant deux extensions (maison.jpg.zip)