GNU/Linux >> Tutoriels Linux >  >> Linux

Renommer en masse le fichier Bash avec compteur ?

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 avec n comme compteur. Le ++ le symbole indique à bash d'incrémenter la variable n .

  • 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.


Linux
  1. Lecture de lignes à partir d'un fichier avec Bash :pour Vs. Tandis que?

  2. Pour une boucle avec des noms de fichiers ?

  3. Boucler le contenu d'un fichier dans Bash

  4. Comment remplacer les espaces dans les noms de fichiers à l'aide d'un script bash

  5. Écrire dans le fichier .txt ?

Bash :Écrire dans un fichier

Commande de source bash

Bash :ajouter au fichier

La redirection bash expliquée avec des exemples

Comment travailler avec des liens durs et des liens souples sous Linux

Fichier mv Linux avec un nom long