Renommer un fichier sur Linux se fait généralement avec mv : dans le terminal, indiquez son nom actuel, puis le nom souhaité. La même commande déplace aussi des fichiers et des répertoires. Pour traiter plusieurs éléments, une boucle shell ou l’utilitaire rename évite de répéter les opérations à la main, mais un renommage en masse mérite une vérification avant exécution. Une destination déjà occupée peut être remplacée sans avertissement : c’est le piège à neutraliser en priorité.
En bref
- Un seul fichier à renommer : utilisez
mv ancien-nom nouveau-nom. - Une destination à protéger : préférez
mv -ioumv -n. - Plusieurs noms à modifier : testez d’abord une boucle ou la commande
rename. - Des milliers de fichiers : utilisez
findplutôt qu’un motif susceptible de dépasser la limite du shell.
Renommer un fichier sur Linux avec la commande mv
La commande mv, abréviation de « move », sert à déplacer ou à renommer un fichier. Pour renommer, la source et la destination désignent deux chemins de fichier, et le nouveau nom reste dans le même répertoire. Par exemple, mv rapport.txt rapport-final.txt change le nom de rapport.txt sans créer de copie distincte.
La syntaxe générale est mv [options] source destination. Quand plusieurs sources sont indiquées, la destination doit être un répertoire existant : mv *.log archives/ déplace les fichiers correspondant au motif dans ce répertoire. Ce détail explique bien des erreurs de débutant : avec plusieurs fichiers, le dernier argument n’est pas un nouveau nom, mais un dossier cible.
Imaginons une petite équipe qui reçoit chaque semaine un document nommé rapport.txt. Avant de l’archiver, une personne peut le renommer pour indiquer sa période : mv rapport.txt rapport-semaine-12.txt. Le nom devient plus utile dans les échanges, les sauvegardes et les scripts d’automatisation, sans modifier le contenu du document.
Renommer aussi un répertoire
Le principe est identique pour un dossier : mv brouillons contenus-valides renomme le répertoire brouillons. Il n’est pas nécessaire d’ajouter une option récursive. Les fichiers qu’il contient restent ensemble, puisque l’opération porte sur le répertoire lui-même.
Si la destination est déjà un répertoire, le résultat change. La commande mv photo.jpg images/ déplace la photo dans images ; elle ne la renomme pas en « images ». Pour obtenir un déplacement avec un nouveau nom, donnez le chemin complet : mv photo.jpg images/photo-ete.jpg.
Dans le même système de fichiers, le renommage repose généralement sur une modification de métadonnées plutôt que sur une copie complète des données. Il est donc presque instantané, même pour un gros fichier. La règle à retenir est simple : un nom de fichier en destination signifie souvent un renommage, tandis qu’un répertoire cible signifie un déplacement.

Utiliser mv sans écraser le mauvais fichier
Le comportement par défaut de mv peut surprendre : si un fichier portant le nom de destination existe déjà, il peut être remplacé sans demande de confirmation. Une faute de frappe dans le nom cible suffit donc à perdre l’accès à la version précédente. Avant une opération sur des documents de travail, des fichiers de configuration ou un dossier partagé, il vaut mieux choisir explicitement le niveau de protection.
L’option -i demande une confirmation lorsqu’un remplacement est sur le point d’avoir lieu : mv -i brouillon.txt final.txt. À l’inverse, -n empêche l’écrasement et laisse la source en place si le fichier cible existe : mv -n *.conf sauvegardes/. Sur les systèmes GNU/Linux, -v affiche chaque opération effectuée. Combinées, ces options rendent le résultat plus visible, par exemple avec mv -n -v *.jpg images/.
L’option -f force le remplacement sans confirmation. Elle est rarement un bon choix pour une commande lancée à la main, surtout si les chemins viennent d’une variable ou d’un script encore peu testé. Pour une configuration sensible, -i est plus prudent ; pour un lot où aucune destination ne doit être remplacée, -n est plus adapté.
Espaces, caractères spéciaux et motifs du shell
Un nom contenant des espaces doit être protégé par des guillemets ou par une barre oblique inverse. Ainsi, mv "Compte rendu avril.pdf" "Compte rendu mai.pdf" transmet chaque nom comme un seul argument. Sans guillemets, le shell découpe les noms aux espaces et la commande croit recevoir plusieurs fichiers différents.
Les caractères comme * et ? sont développés par le shell avant l’exécution de mv. Le motif *.pdf vise les fichiers PDF du répertoire courant, mais généralement pas les fichiers cachés commençant par un point. Avant un lot important, vérifiez les correspondances avec printf '%sn' *.pdf ou ls -- *.pdf. Si aucun fichier ne correspond, le résultat dépend du shell utilisé.
Le double tiret --, reconnu par les outils GNU, indique que les options sont terminées. Il protège notamment un nom qui commencerait par un tiret : mv -- "-brouillon.txt" brouillon.txt. Cette précaution paraît mineure jusqu’au jour où un nom de fichier est interprété comme une option. En ligne de commande, sécuriser les arguments est plus fiable que corriger une opération mal lancée.
Renommage en masse avec une boucle shell
mv renomme une source à la fois. Pour appliquer la même transformation à une série de fichiers, le shell peut parcourir les noms et appeler la commande pour chacun. Cette méthode convient aux petits lots dont la règle est stable : convertir une extension, ajouter une date ou préfixer des fichiers avant archivage.
Voici un exemple pour transformer les fichiers .htm du répertoire courant en fichiers .html :
for f in *.htm; do
[ -e "$f" ] || continue
mv -i -- "$f" "${f%.htm}.html"
done
La variable f reçoit successivement chaque nom trouvé. Les guillemets protègent les espaces et les caractères spéciaux, tandis que ${f%.htm} retire le suffixe final .htm. Le test [ -e "$f" ] || continue évite qu’un motif non reconnu soit traité comme un nom littéral dans les shells qui conservent le motif tel quel.
L’option -i permet de contrôler chaque collision, mais ralentit le traitement d’un lot volumineux. Une fois les noms vérifiés, on peut remplacer cette option par -n pour ignorer sans écraser les destinations déjà existantes. Ne retirez pas les guillemets sous prétexte que les noms actuels n’ont pas d’espaces : un nouveau fichier importé plus tard peut suffire à casser le script.
Prévisualiser avant de modifier les noms
Un renommage automatique doit d’abord montrer ce qu’il va faire. Pour simuler le changement d’extension sans toucher aux fichiers, affichez les couples ancien nom et nouveau nom :
for f in *.htm; do
[ -e "$f" ] || continue
printf '%s -> %sn' "$f" "${f%.htm}.html"
done
Si la liste est correcte, relancez la boucle avec mv. Ce temps de contrôle est utile dans un dossier de production, mais aussi pour des photos ou des factures où une règle trop large peut produire des noms ambigus. Un script court n’est pas forcément sans risque : il agit vite, et parfois sur davantage de fichiers que prévu.
Pour une règle de remplacement plus complexe, l’utilitaire rename peut être pratique, mais son fonctionnement varie selon la distribution et le paquet installé. Certaines versions utilisent des expressions Perl, d’autres une syntaxe différente. Vérifiez la documentation locale avec man rename avant de lancer une commande trouvée en ligne ; le nom de l’outil ne garantit pas que sa syntaxe soit identique partout.
Renommer beaucoup de fichiers avec find ou rename
Une boucle sur *.log ne regarde que le répertoire courant. Pour repérer des fichiers dans des sous-répertoires, find offre un filtrage plus précis. Par exemple, pour déplacer les fichiers journaux trouvés sous logs vers archives, en conservant les noms :
find logs -type f -name '*.log' -exec mv -n -v -t archives/ -- {} +
Cette forme utilise les options GNU -t et -- : -t place le répertoire cible avant les sources, et {} + regroupe plusieurs chemins par appel. Les noms contenant des espaces sont transmis sans découpage. La destination doit exister avant l’opération ; créez-la au besoin avec mkdir -p archives.
On rencontre aussi des exemples fondés sur xargs. Dans ce cas, une séparation par espaces ou retours à la ligne n’est pas suffisante pour tous les noms possibles. L’option -print0 de find, associée à xargs -0, transmet les chemins séparés par un caractère nul et évite cette ambiguïté. Pour les scripts de fichiers, ce détail fait la différence entre un exemple de démonstration et une commande qui résiste aux noms inhabituels.
Choisir entre mv et rename
mv convient au déplacement et aux changements simples réalisés avec une boucle. rename est conçu pour appliquer une transformation de nom à plusieurs fichiers en une seule commande, souvent à l’aide d’une expression régulière. Par exemple, une version Perl peut remplacer un texte dans tous les noms sélectionnés, mais il faut confirmer que cette version est bien installée et connaître ses options.
Pour changer les majuscules, supprimer une chaîne ou renuméroter une série, testez d’abord la commande en mode simulation si la version de rename le permet. L’option de simulation n’est pas identique dans toutes les implémentations. En cas de doute, une boucle for qui affiche les noms prévus reste plus transparente, même si elle demande quelques lignes de plus.
Un motif comme *.png n’inclut pas automatiquement les fichiers présents dans les sous-répertoires. find est préférable pour une recherche récursive, tandis que rename traite surtout les chemins qui lui sont transmis. Choisir l’outil selon la portée réelle de l’opération évite de croire qu’un lot complet a été renommé alors que seuls les fichiers du dossier courant ont été modifiés.
Déplacer des fichiers sur un autre système de fichiers
Renommer un fichier dans le même système de fichiers est habituellement rapide : Linux modifie le nom associé à l’entrée, sans recopier le contenu. En revanche, déplacer un fichier vers une autre partition ou un disque externe implique généralement une copie suivie de la suppression de la source. L’opération peut alors durer, nécessiter assez d’espace libre et échouer si le support est débranché ou si la copie est interrompue.
La distinction compte pour les répertoires volumineux et les déploiements web. Préparer une nouvelle version à côté de la version active, sur le même système de fichiers, puis changer le nom du répertoire peut réduire la période pendant laquelle le chemin attendu est indisponible. Ce n’est toutefois pas une stratégie universelle : les permissions, les liens symboliques, les services en cours et le mécanisme de publication doivent aussi être vérifiés.
Lors d’un déplacement entre systèmes de fichiers, mv tente normalement de copier les données puis de supprimer la source. Les attributs préservés peuvent dépendre des droits de l’utilisateur et du système cible. Sur un serveur, vérifiez le résultat avec ls -l ou namei -l, en particulier après une opération dans /etc, /var ou la racine d’un site comme /var/www.
Erreurs fréquentes et contrôles utiles
Le message « Aucun fichier ou répertoire de ce type » indique souvent un chemin mal orthographié ou un mauvais répertoire courant. pwd affiche l’emplacement actuel, et ls permet de vérifier le nom exact. « Permission refusée » demande d’examiner les droits ; ajouter sudo sans comprendre la cause n’est pas un réflexe à adopter, car une commande privilégiée peut aussi écraser les mauvais fichiers.
Pour les opérations à risque, ajoutez -v afin de conserver une trace lisible des actions, et faites une sauvegarde avant le traitement d’un dossier critique. L’option GNU -b peut créer une copie de sauvegarde d’une destination remplacée, mais elle ne remplace pas une sauvegarde indépendante. Il n’existe pas de bouton d’annulation général pour mv : après une erreur, il faut rétablir les chemins si c’est possible ou restaurer une copie.
| Besoin | Commande adaptée | Point de vigilance |
|---|---|---|
| Renommer un fichier | mv ancien nouveau |
Vérifier si la destination existe déjà |
| Éviter un remplacement | mv -n source cible |
Option disponible dans GNU mv |
| Contrôler avant remplacement | mv -i source cible |
Lire chaque demande de confirmation |
| Traiter un grand ensemble | find … -exec mv … {} + |
Tester le filtre avant l’exécution |
Dans un dossier de production, le meilleur automatisme n’est pas celui qui lance le plus de commandes par seconde. C’est celui dont les correspondances sont vérifiées, les collisions prévues et les résultats consultables après coup.
Comment renommer un fichier sur Linux dans le terminal ?
Utilisez mv suivi du nom actuel et du nouveau nom, par exemple : mv rapport.txt rapport-final.txt. Ajoutez -i pour demander confirmation en cas de remplacement ou -n pour ne pas écraser une destination existante.
La commande mv permet-elle de renommer plusieurs fichiers ?
mv traite une source à la fois pour un renommage. Pour plusieurs fichiers, utilisez une boucle shell ou l’utilitaire rename après avoir vérifié sa syntaxe sur votre distribution.
Comment gérer les espaces dans un nom de fichier ?
Placez le chemin entre guillemets, par exemple : mv
Peut-on annuler une commande mv ?
mv ne dispose pas d’une fonction d’annulation. Si le chemin initial est connu, déplacez le fichier à nouveau ; sinon, restaurez-le depuis une sauvegarde ou un instantané.
