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
Laisser un commentaire