1 votes

Renommer plusieurs fichiers avec les mêmes chiffres après la virgule

J'ai plusieurs fichiers avec des noms vort-0.01.txt, vort-0.02.txt, ...

vort-0.1.txt ... vort-0.2.txt ... etc.

Je veux renommer chaque fichier avec deux points décimaux, c'est-à-dire que je veux changer le nom de vort-0.1.txt en vort-0.10.txt et garder vort-0.01.txt tel quel.

Comment puis-je faire cela en utilisant bash script ?

Merci pour votre aide.

2voto

steeldriver Points 118154

En utilisant le logiciel rename puis la commande

$ ls vort*.txt
vort-0.001.txt  vort-0.01.txt  vort-0.1.txt  vort-0.2.txt

puis

rename -n 's/(\d+\.\d+)/sprintf "%.2f", $1/e' vort*.txt

imposera partout une précision à deux chiffres, car

rename(vort-0.001.txt, vort-0.00.txt)
rename(vort-0.1.txt, vort-0.10.txt)
rename(vort-0.2.txt, vort-0.20.txt)

Si vous souhaitez renommer en minimum c'est-à-dire ne modifier que les noms de fichiers qui ont actuellement une précision à un chiffre, alors

$ rename -n 's/(\d+\.\d)(?=\D)/sprintf "%.2f", $1/e' vort*.txt
rename(vort-0.1.txt, vort-0.10.txt)
rename(vort-0.2.txt, vort-0.20.txt)

Retirer le -n une fois que vous avez la certitude qu'il fait ce qu'il faut.


Pour faire la même chose en utilisant uniquement des manipulations bash Shell,

for f in vort-?.?.txt; do 
  base=${f%.txt}
  printf -v newname 'vort-%.2f.txt' "${base#vort-}"
  echo mv -- "$f" "$newname"
done

Ici, enlevez le echo après les tests.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X