Bonjour,
je ne suis pas un aficionados de sed, mais avec une pratique de vim je m’y retrouve.
J’ai résolu la question posée dans le titre ainsi, mais certains d’entre vous auront certainement mieux à proposer.
Il s’agit de renuméroter une série de fichiers dont le nom est sous la forme:
200_nomIdentique.xxx à 220_nomIdentique.xxx
[Correctif, voir plus bas: les noms ne sont pas identiques]
en ajoutant «1» au nombre initial.
Voici ma solution:
La ligne de commande:
—————————————————————
for i in {220..200} ; do j=$((i + 1)); F=$(echo ${i}*) ; f=$(echo "$F" | sed s/$i/$j/) ; echo "$F → $f" ; mv "$F" "$f" ; done
Explication:
—————————————————————
1 for i in {220..200} ; # Les numéros des noms de fichiers à remplacer
2 do
3 j=$((i + 1)); # nouvelle numérotation ( j = i+1 )
4 F=$(echo ${i}*) ; # nom du fichier initial (i)
5 f=$(echo "$F" | sed s/$i/$j/); # nom du fichier final ( s/$i/$j )
6 echo "$F → $f" ; # affichage pour vérifier
7 mv "$F" "$f" ; # remplacement effectif
8 done
(On remplace la ligne 6 par la ligne 7 si la ligne 6 affiche le résultat voulu.)
Numérotation autre qu’en préfixe:
——————————————————
Si le numéro est le seul nombre de la série (ici 200 à 220) dans les noms de tous les fichiers du répertoire, alors on peut faire ma même chose en ne modifiant que les jockers de la ligne 4.