Je veux renommer tous les fichiers d'un dossier avec PREFIX+COUNTER+FILENAME
par ex.
saisir :
england.txt
canada.txt
france.txt
sortie :
CO_01_england.txt
CO_02_canada.txt
CO_03_france.txt
Réponse acceptée :
Cela fait ce que vous demandez :
n=1; for f in *.txt; do mv "$f" "CO_$((n++))_$f"; done
Comment ça marche
-
n=1
Ceci initialise la variable
n
à 1. -
for f in *.txt; do
Cela démarre une boucle sur tous les fichiers du répertoire courant dont les noms se terminent par
.txt
. -
mv "$f" "CO_$((n++))_$f"
Cela renomme les fichiers pour avoir le
CO_
préfixe avecn
comme compteur. Le++
le symbole indique à bash d'incrémenter la variablen
. -
done
Cela signale la fin de la boucle.
Amélioration
Cette version utilise printf
ce qui permet un meilleur contrôle sur la façon dont le numéro sera formaté :
n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done
En particulier, le %02i
format placera un zéro devant le nombre lorsque n
est toujours à un seul chiffre.