[Linux-31] renommer des fichiers

jdd jdd at dodin.org
Ven 17 Avr 16:53:55 CEST 2015


Le 04/04/2015 10:49, jpcas a écrit :
> Salut,
>
> Une façon de faire parmi d'autres…
> Ce n'est sûrement pas la plus jolie ni la plus optimisée ;-\

mais elle marche très bien!

> ============================
> Le script
> ============================

> #! /bin/bash
>
> while IFS="." read pref suf

IFS indique que le séparateur va être le ".".

read remplit les variables pref (préfixe) et suf (suffixe) avec ce qui 
est avant et ce qui est après le premier point (à priori ca ne 
marcherait pas s'il y a avait plusieurs points)

> do
> nom="${pref}.${suf}"

le nom initial du fichier

> suf1="${suf//[^[:alpha:]]/}"

dans suf1 la partie lettre du suffixe

> suf2="${suf//[^[:digit:]]/}"

dans suf2 la partie numérique

> suf2="$(printf '%03d' ${suf2})"

la partie numérique est alignée à gauche sur trois caractères, avec des 
zéros pour remplacer les vides

> mv -v "${nom}" "${pref}.${suf2}.${suf1}"

changement de nom du fichier. J'ai préféré écrire ${pref}-${suf2) pour 
ne pas avoir deux points dans le fichier résultat (on ne sait jamais si 
ca va être lû)

> done < <(ls *.mts*)

je suppose que c'est la fin qui envoie au script les noms de fichier, 
mais là je suis un peu largué :-(

merci
jdd




Plus d'informations sur la liste de diffusion Linux-31