Voyons comment renommer un fichier avec la commande standard mv
et la commande rename
, plus flexible et rapide.
Renommer avec la commande mv
#
La commande mv
est une commande standard des distribution Linux et sert initialement à déplacer un fichier avec la possibilité de le renommer.
C'est ce dernier mécanisme que l'on utilise.
Renommer 1 seul fichier#
Pour renommer un fichier, il faut exécuter la commande :
mv oldfile.txt newfile.txt
Renommer plusieurs fichiers#
Pour renommer plusieurs fichiers .txt en .md dans le dossier courant, il faut exécuter la commande :
for f in *.txt ; do mv -- "$f" "${f%.txt}.md"
Le nouveau fichier est nommé avec le nom de l'ancien fichier en excluant la partie ".txt". Et une nouvelle extension ".md" est donnée à ce fichier.
Renommer avec la commande rename
#
Comme le paquet rename n'est pas d'office installé sur votre distribution Fedora, il fait parti du paquet util-linux. Il faut donc préalablement l'installer avec :
$ sudo dnf install rename
Usage de rename
#
La commande `rename' s'utilise comme suit :
rename [option] oldname newname filename
avec :
- option : une série d'options disponibles (
-v
pour le mode verbeux,-n
pour le mode simulation) - oldname : la chaine de caractère à remplacer
- newname : la nouvelle chaine de caractère
- filename : le nom du fichier à renommer
Exemples :#
$ ls
abcd1.txt abcd2.txt abcd3.txt
$ rename abc xyz *.txt
$ ls
xyzd1.txt xyzd2.txt xyzd3.txt
Pour renommer tous les fichier .bak en .txt :
$ ls
abcd1.bak abcd2.bak abcd3.bak
$ rename .bak .txt *.bak
$ ls
abcd1.txt abcd2.txt abcd3.txt
Pour corriger les extensions de fichiers :
$ ls
abcd1.htm abcd2.htm abcd3.htm
$ rename abc xyz *.txt
$ ls
abcd1.html abcd2.html abcd3.html
Renommer avec la commande prename
#
Comme le paquet prename n'est pas d'office installé sur votre distribution Fedora, il faut préalablement le faire avec :
$ sudo dnf install prename
Pourquoi 'prename' ? parce que le 'p' est pour Perl, le langage de programmation de 'prename'.
Usage de prename
#
La commande `prename' s'utilise comme suit :
prename [option] <regex> filename
avec :
- option : une série d'options disponibles (
-v
pour le mode verbeux,-n
pour le mode simulation) - regex : une expression régulière Perl
- filename : le nom du fichier à renommer
Exemple :
$ ls
abcd1.txt abcd2.txt abcd3.txt
$ prename 's/abc/xyz/' *.txt
$ ls
xyzd1.txt xyzd2.txt xyzd3.txt
Renommer par suppression d'extension#
Pour renommer tous les fichiers .txt en leur enlevant leur extension :
$ ls
abcd1.txt abcd2.txt abcd3.txt
$ prename 's/\.txt$//' *.txt
$ ls
abcd1 abcd2 abcd3
Convertir le nom de fichier en majuscule#
$ ls
abcd1.txt abcd2.txt abcd3.txt
$ prename 'y/a-z/A-Z/' *.txt
$ ls
ABCD1.txt ABCD2.txt ABCD3.txt
Renommer en enlevant les espaces du nom de fichier#
$ ls
ab - cd 1.txt a b c d 2.txt abc - d3.txt
$ prename 's/ *//g' *.txt
$ ls
ab-cd1.txt abcd2.txt abc-d3.txt
Renommer en remplaçant les espaces par des underscores#
$ ls
ab - cd 1.txt a b c d 2.txt abc - d3.txt
$ prename 's/\s+/_/g' *.txt
$ ls
ab_-_cd_1.txt a_b_c_d_2.txt abc_-_d3.txt
Rajouter un préfixe au nom de fichier#
$ ls
abcd1.txt abcd2.txt abcd3.txt
$ prename 's/^/prefixe_/' *.txt
$ ls
prefixe_abcd1.txt prefixe_abcd2.txt prefixe_abcd3.txt
Rajouter un suffixe au nom de fichier#
$ ls
abcd1.txt abcd2.txt abcd3.txt
$ prename 's/.txt$/_suffixe.txt/' *.txt
$ ls
abcd1_suffixe.txt abcd2_suffixe.txt abcd3_suffixe.txt