Linux / Comment Renommer un Fichier ou un Répertoire

Pour renommer un fichier ou un répertoire sous Linux, spécifiez le chemin existant et le nouveau chemin dans l'ordre avec la commande mv. Si le nom cible existe déjà, il peut être écrasé, ou la source peut être déplacée vers un emplacement inattendu, il faut donc le vérifier avant l'exécution.

Format de base pour renommer

Le mv utilisé dans le guide pour déplacer des fichiers avec mv est également utilisé pour renommer. Si les deux chemins se trouvent dans le même répertoire, seul le nom change, et s'ils se trouvent dans des répertoires différents, l'emplacement change également.

mv -i -- source destination

-i vérifie avant d'écraser un fichier cible existant. -- indique la fin des options, donc les noms commençant par un trait d'union ne sont pas interprétés comme des options. Les exemples ci-dessous sont basés sur GNU coreutils mv et le shell Bash.

Préparation des fichiers et des répertoires pour la pratique

Pratiquez dans un répertoire temporaire afin de ne pas toucher aux données existantes. Exécutez les commandes ci-dessous dans l'ordre dans le même shell. Le chemin du nouveau répertoire temporaire créé sera stocké dans la variable workdir.

workdir=$(mktemp -d)
printf 'example\n' > "$workdir/report.txt"
mkdir "$workdir/docs"
ls -l -- "$workdir"

Si report.txt et docs apparaissent dans la sortie, vous êtes prêt. Pour vérifier le chemin, exécutez printf '%s\n' "$workdir". Comme les commandes utilisent des variables du shell actuel, si vous ouvrez un nouveau terminal, vous devez vous préparer à nouveau.

Renommage des fichiers

Renommez le fichier de pratique de report.txt en summary.txt et vérifiez les résultats. Assurez-vous que la nouvelle cible n'existe pas déjà avant d'exécuter.

ls -la -- "$workdir"
mv -i -- "$workdir/report.txt" "$workdir/summary.txt"
ls -l -- "$workdir"
cat -- "$workdir/summary.txt"

Si cela réussit, la liste affichera summary.txt au lieu de report.txt, et la dernière commande produira example. Lors du renommage au sein du même système de fichiers, le contenu reste identique. Pour revenir au nom d'origine, assurez-vous que le nom d'origine n'est pas utilisé, puis échangez les deux chemins et exécutez mv -i.

Renommer des répertoires

Les répertoires sont renommés de la même manière. La commande suivante renomme docs en archive dans un environnement d'exercice où la cible n'existe pas.

mv -i -T -- "$workdir/docs" "$workdir/archive"
ls -l -- "$workdir"

Si cela réussit, archive sera affiché au lieu de docs. -T est une option dans GNU mv qui ne considère pas le dernier chemin comme le répertoire cible de manière spéciale. Sans cette option, si vous spécifiez un répertoire déjà existant comme cible, la source peut être déplacée dans ce répertoire au lieu d’être renommée. Même si vous utilisez -T, des remplacements ou des erreurs peuvent se produire en fonction du type et de l'état de la cible existante, donc vérifiez d'abord. Les répertoires cibles non vides ne peuvent pas être remplacés.

Vérification de l'écrasement et du chemin

Si vous spécifiez un fichier existant comme cible, le fichier peut être écrasé. Sauvegardez d'abord les fichiers importants, et répondez y uniquement lorsque vous écrasez en réponse à la question de confirmation de -i. Pour éviter d'écraser, entrez n. Le texte de confirmation peut varier selon le système et les paramètres de langue.

Si le nom de fichier contient des espaces, entourez le chemin entier de guillemets doubles. L'exemple suivant montre comment créer un fichier de pratique séparé puis le renommer.

printf 'notes\n' > "$workdir/old notes.txt"
mv -i -- "$workdir/old notes.txt" "$workdir/new notes.txt"
cat -- "$workdir/new notes.txt"

Si notes s'affiche à la fin, le fichier a été lu sous un nouveau nom. Dans le travail réel, si le chemin est mal spécifié ou s'il n'y a pas d'autorisation, vérifiez le message d'erreur et les permissions d'écriture des répertoires source et cible. Lors du déplacement vers un autre système de fichiers, il peut y avoir copie suivie de la suppression de l'original, vous devez donc vérifier l'espace et le résultat. Pour plus de détails sur les options et le comportement, référez-vous à le manuel mv de GNU coreutils .