• [^] # Re: jette un oeil a man rename

    Posté par . En réponse au message Expression rationnelle - Majuscule/Miniscule. Évalué à 3.

    les expr reg bash ne sont pas tres évoluées
    Les patterns de base sont assez nazes, mais en bash-3.x y'a aussi le support des vraies regexps, même si elles sont pas forcement toujours très pratiques à utiliser (opérateur de comparaison "=~", et variable $BASH_REMATCH pour récupérer les matchs). En étant un peu tordu, enfin plus pour illustrer leur utilisation en fait, ça peut donnes des trucs dans ce genre là :
    for f in * ; do
    	if [[ "${f}" =~ '^([a-zA-Z]+)\.([mM][pP]3)$' ]] \
    	&& [[ "${BASH_REMATCH[2]}" != "mp3" ]] ; then
    		mv "${f}" "${BASH_REMATCH[1]}.mp3"
    	fi
    done
    Comme tu vois, je confronte des noms de fichier à une regexp 'achement compliquée, qui a deux sous expressions qui, quand ça matche, sont récupérables dans le tableau $BASH_REMATCH (et pour info, à l'indice 0 on aurait trouvé le match complet, ici équivalent à $f bien sûr). Heu, bon, on est bien d'accord que mon exemple est débile, mais bref, parfois c'est bien pratique pour éviter de forker des grep ou des sed...