Comment renommer tous les fichiers d’un répertoire sur la base d’un préfixe et d’un numéro de séquence en Bash

—

par

dans

Contexte

Voici un script pour renommer tous les fichiers d’un répertoire vers le format « PREFIXE-NUMERO-NomFichierOriginal.extension ».

Le répertoire dans lequel renommer les fichiers, le préfixe et le numéro de départ pourront être choisis à l’exécution en fournissant des paramètres sur la ligne de commande.

En considérant que l’on part de la situation suivante :

$ ls -l
total 0
-rw-r--r-- 1 user user 0 2 mars 11:22 ma-video.mkv
-rw-r--r-- 1 user user 0 2 mars 11:22 mon-fichier.txt
-rw-r--r-- 1 user user 0 2 mars 11:22 mon-image.jpg

Le script fourni ci-dessous vous permettra d’arriver au résultat :

$ ls -l
total 0
-rw-r--r-- 1 user user 0 2 mars 11:36 PREFIXE-10-ma-video.mkv
-rw-r--r-- 1 user user 0 2 mars 11:36 PREFIXE-11-mon-fichier.txt
-rw-r--r-- 1 user user 0 2 mars 11:36 PREFIXE-12-mon-image.jpg

Le code

Voici le script en question (de mon côté je l’ai nommé rename.sh, mais vous pouvez tout à fait choisir un autre nom) :

#!/bin/bash

# Vérifie si on a bien reçu nos paramètres
if [[ $# -ne 3 ]]; then
    echo "Veuillez fournir un répertoire, un préfixe et un numéro de départ."
    exit 1
fi

# Récupère les arguments passé à la ligne de commande
DIRECTORY=$1
PREFIX=$2
i=$3

# On se déplace dans le répertoire indiqué
cd "$DIRECTORY"

# On itère sur chaque élément contenu dans notre répertoire
for FILE in *; do
    # Si c'est un fichier, on le renomme avec le nouveau format
    if [ -f "$FILE" ]; then
        NEWFILE="$PREFIX-$i-$FILE"
        echo "Renomme le fichier : $FILE $NEWFILE"
        mv -v "$FILE" "$NEWFILE"
        ((++i))
    fi
done

Le résultat

Voici le résultat sur notre répertoire d’exemple :

$ ls -l
total 0
-rw-r--r-- 1 user user 0 2 mars 11:36 ma-video.mkv
-rw-r--r-- 1 user user 0 2 mars 11:36 mon-fichier.txt
-rw-r--r-- 1 user user 0 2 mars 11:36 mon-image.jpg

$ bash /tmp/rename.sh /tmp/exemple PREFIXE 10
Renomme le fichier : ma-video.mkv PREFIXE-10-ma-video.mkv
renommé 'ma-video.mkv' -> 'PREFIXE-10-ma-video.mkv'
Renomme le fichier : mon-fichier.txt PREFIXE-11-mon-fichier.txt
renommé 'mon-fichier.txt' -> 'PREFIXE-11-mon-fichier.txt'
Renomme le fichier : mon-image.jpg PREFIXE-12-mon-image.jpg
renommé 'mon-image.jpg' -> 'PREFIXE-12-mon-image.jpg'

$ ls -l
total 0
-rw-r--r-- 1 user user 0 2 mars 11:36 PREFIXE-10-ma-video.mkv
-rw-r--r-- 1 user user 0 2 mars 11:36 PREFIXE-11-mon-fichier.txt
-rw-r--r-- 1 user user 0 2 mars 11:36 PREFIXE-12-mon-image.jpg

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *