brizou a écritje voudrais remplacer les . par des espaces sauf bien sûr le point avant l'extension du fichier est-ce possible ?
Oui, par exemple pour remplacer les . par un espace sur les fichiers d'extension .avi et .jpg (sensible à la case) du répertoire courant :
rename 's/\.(?![^\.]+$)/ /g' *.avi *.jpg
Je t'accorde que ce n'est pas très intuitif si on ne connait pas les expressions rationnelles 🙂
's/./ /g' remplacerait tous les "." par des espaces
.(?![^.]*$) signifie en gros un point non suivi ("?!") d'une suite de caractères ne contenant pas de point ("[^.]+") jusqu'à la fin du nom du fichier ("$")
On pourrait aussi s'y prendre autrement. Par exemple en remplaçant d'abord tous les "." par des espace (y/./ /) puis le dernier espace par un point
rename 'y/./ /;s/ ([^ ]+)$/.$1/' *.jpg *.avi
Il y aurait encore d'autres moyens, sans rename 😉
attention toutefois aux extensions doubles, comme ".tar.gz". Si ces fichiers peuvent être visés, il faudrait affiner un peu l'expression rationnelle :
rename 's/\.(?!(tar\.)?[^\.]+$)/ /g' *.*