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=1Ceci initialise la variable
nà 1. -
for f in *.txt; doCela 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 avecncomme compteur. Le++le symbole indique à bash d'incrémenter la variablen. -
doneCela 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.