La commande Linux mv est utilisée pour déplacer des fichiers et des répertoires d'un emplacement à un autre. En plus de déplacer les fichiers, il peut également renommer un fichier ou un répertoire.
1. Renommer un fichier
Lors du renommage d'un fichier à l'aide de la commande mv, il conserve le même numéro d'inode même après l'avoir déplacé vers un nom différent. Si vous déplacez le fichier vers un autre système de fichiers, le numéro d'inode sera différent.
$ cd /tmp $ ls -i sample.txt 136407 sample.txt $ mv sample.txt sample1.txt $ ls -i sample1.txt 136407 sample1.txt
Remarque : ls -i affiche le numéro d'inode d'un fichier, comme nous l'avons vu précédemment dans nos exemples de commande ls.
2. Renommer un répertoire
Tout comme pour renommer un fichier, vous pouvez renommer un répertoire à l'aide de la commande mv comme indiqué ci-dessous. Cela permet également de conserver le même numéro d'inode du répertoire après le changement de nom.
Si vous faites juste ls -l dir, il affichera les fichiers dans le répertoire. Pour afficher les propriétés du répertoire, utilisez l'option -d. -i option affiche le numéro d'inode du répertoire.
$ ls -ldi dir1 271365 drwxr-xr-x 2 bala bala 4096 2010-10-30 20:25 dir1 $ mv dir1 dir2 $ ls -ldi dir2 271365 drwxr-xr-x 2 bala bala 4096 2010-10-30 20:25 dir2
3. Demander une confirmation avant d'écraser
Par défaut, la commande mv ne demandera aucune confirmation si le fichier de destination existe, il l'écrase simplement. Pour éviter cela, vous souhaiterez peut-être obtenir une confirmation de la commande move avant d'écraser le fichier de destination à l'aide de l'option -i, comme indiqué ci-dessous. Vous pouvez taper 'y' ou 'n' pour accepter ou rejeter l'opération de déplacement.
$ mv -i sample.txt sample1.txt mv: overwrite `sample1.txt'?
Lorsque l'autorisation du fichier de destination est différente de celle du fichier source, la commande mv -i affichera la confirmation suivante.
$ mv -i sample.txt sample1.txt mv: try to overwrite `sample1.txt', overriding mode 0644 (rw-r--r--)? y
4. Déplacer plusieurs fichiers vers un répertoire spécifique
Vous pouvez déplacer plusieurs fichiers à l'aide de la commande mv. L'exemple suivant déplace le contenu du répertoire courant vers un autre répertoire.
$ cd chap1 $ ls -F ex1.c ex2.c ex3.c example/ exercise/ $ mv * chap2/
5. Effectuez une sauvegarde de la destination avant d'écraser
En utilisant l'option mv –suffix, vous pouvez effectuer la sauvegarde du fichier de destination avant de l'écraser. Le fichier de destination d'origine sera déplacé avec l'extension spécifiée dans l'option -S ou –suffixe.
$ ls file1 file2 $ mv --suffix=.bak file1 file2 $ ls file2 file2.bak
Remarque : Vous voudrez peut-être créer un alias pour 'mv –suffix', qui effectuera automatiquement une sauvegarde chaque fois que vous utiliserez la commande mv et si le fichier de destination existe.
6. Déplacez uniquement les fichiers qui n'existent pas dans le répertoire de destination
Lorsque vous faites mv *, tous les fichiers seront déplacés vers le répertoire de destination. Cependant, si vous souhaitez déplacer uniquement les fichiers du répertoire source qui n'existent pas dans le répertoire de destination, utilisez l'option mv -u comme indiqué ci-dessous.
La commande suivante déplacera uniquement les ex2 et ex2 de chap1 à chap2, en tant que fichier ex1 déjà existant dans chap2, qui ne sera pas déplacé.
$ ls chap1 ex1 ex2 ex3 $ ls chap2 ex1 $ mv -u chap1/* chap2/ $ ls chap1 ex1 $ ls chap2 ex1 ex2 ex3