Comment déplacer des fichiers et des dossiers dans la ligne de commande Linux

Couper, copier et coller font partie de la vie informatique quotidienne.
Dans le chapitre précédent, vous avez appris à copier des fichiers et des dossiers (répertoires) dans le terminal.
Dans cette partie de la série Terminal Basics, vous découvrirez l’opération de copier-coller (déplacement) dans le terminal Linux.
Contents
Déplacer ou couper-coller ?
Bien! Couper-coller n’est pas le terme technique correct ici. Cela s’appelle déplacer des fichiers (et des dossiers).
Étant donné que vous êtes nouveau sur la ligne de commande, vous pouvez trouver le terme « déplacer » déroutant.
Lorsque vous copiez un fichier vers un autre emplacement à l’aide de la commande cd, le fichier source reste au même emplacement.
Lorsque vous déplacez un fichier vers un autre emplacement en utilisant la commande mvle fichier source ne reste plus à l’emplacement d’origine.
Il s’agit de la même opération de copier-coller (Ctrl+X et Ctrl+V) que vous effectuez dans un explorateur de fichiers graphique.
📋
Fondamentalement, le déplacement de fichiers dans la ligne de commande peut être considéré comme un copier-coller dans un environnement graphique.
Déplacer des fichiers
Linux a une commande mv dédiée (abréviation de move) pour déplacer des fichiers et des répertoires vers d’autres emplacements.
Et utiliser la commande mv est assez simple :
mv source_file destination_directory
Le rôle du chemin vient jouer ici aussi. Vous pouvez utiliser le chemin absolu ou relatif. Celui qui convient à votre besoin.
Voyons cela avec un exemple. Vous devriez vous entraîner en reproduisant les exemples de scénarios sur votre système.
Voici la structure du répertoire dans l’exemple :
[email protected]:~/moving_files$ tree
.
├── dir1
│ ├── file_2
│ └── file_3
├── dir2
│ └── passwd
├── dir3
├── file_1
├── file_2
├── file_3
├── file_4
├── passwd
└── services
3 directories, 9 files
Maintenant, disons que je veux déplacer le file_1
pour dir3
.
mv file_1 dir3

Déplacement de plusieurs fichiers
Vous pouvez déplacer plusieurs fichiers vers un autre emplacement dans la même commande mv :
mv file1 file2 fileN destination_directory
Continuons notre exemple de scénario pour déplacer plusieurs fichiers.
mv file_2 file_3 file_4 dir3

🖥️
Déplacez les fichiers vers le répertoire actuel à partir de dir3
. Nous en avons besoin dans les exemples suivants.
Déplacer des fichiers avec prudence
Si la destination contient déjà des fichiers portant le même nom, les fichiers de destination seront immédiatement remplacés. Parfois, vous ne voudrez pas cela.
Comme la commande cp, la commande mv a également un mode interactif avec l’option -i
.
Et le but est le même. Demandez confirmation avant de remplacer les fichiers à destination.
[email protected]:~/moving_files$ mv -i file_3 dir1
mv: overwrite 'dir1/file_3'?
Vous pouvez appuyer sur N pour refuser le remplacement et sur Y ou Entrée pour remplacer le fichier de destination.

Déplacer mais seulement mettre à jour
La commande mv est fournie avec des options spéciales. L’un d’eux est l’option de mise à jour -u
.
Avec cela, le fichier de destination ne sera remplacé que si le fichier déplacé est plus récent que lui.
mv -u file_name destination_directory
Voici un exemple. file_2 a été modifié à 10h39 et file_3 a été modifié à 10h06.
[email protected]:~/moving_files$ ls -l file_2 file_3
-rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_2
-rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:06 file_3
Dans le répertoire de destination dir1, file_2 a été modifié pour la dernière fois à 10h37 et file_3 a été modifié à 10h39.
[email protected]:~/moving_files$ ls -l dir1
total 0
-rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:37 file_2
-rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_3
En d’autres termes, dans le répertoire de destination, le fichier_2 est plus ancien et le fichier_3 est plus récent que ceux déplacés.
Cela signifie également que file_3 ne sera pas déplacé tandis que file_2 sera mis à jour. Vous pouvez le vérifier avec les horodatages des fichiers dans le répertoire de destination après avoir exécuté la commande mv.
[email protected]:~/moving_files$ mv -u file_2 file_3 dir1
[email protected]:~/moving_files$ ls -l dir1
total 0
-rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_2
-rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_3
[email protected]:~/moving_files$ date
Tue Apr 4 10:41:16 AM IST 2023
[email protected]:~/moving_files$
Comme vous pouvez le voir, la commande de déplacement a été exécutée à 10h41 et seul l’horodatage de file_2 a été modifié.

💡
Vous pouvez également utiliser l’option de sauvegarde -b
. Si le fichier de destination est remplacé, il créera automatiquement une sauvegarde avec le filename~
modèle.
Dépannage : la cible n’est pas un répertoire
Si vous déplacez plusieurs fichiers, le dernier argument doit être un répertoire. Sinon, vous rencontrerez cette erreur :
target is not a directory
Ici, je crée un fichier qui se nomme dir
. Le nom ressemble à un répertoire, mais c’est un fichier. Et quand j’essaie d’y déplacer plusieurs fichiers, l’erreur évidente est là :

Mais que se passe-t-il si vous déplacez un seul fichier vers un autre fichier ? Dans ce cas, le fichier cible est remplacé par le contenu du fichier source tandis que le fichier source est renommé en tant que fichier cible. Plus d’informations à ce sujet dans les sections suivantes.
Répertoires mobiles
Jusqu’à présent, vous avez tout vu sur le déplacement de fichiers. Que diriez-vous de déplacer des répertoires?
Les commandes cp et rm utilisaient l’option récursive -r pour copier et supprimer des dossiers respectivement.
Cependant, il n’y a pas une telle exigence pour la commande mv. Vous pouvez utiliser la commande mv telle quelle pour déplacer des répertoires.
mv dir target_directory
Voici un exemple où je déplace le dir2
répertoire à dir3
. Et comme vous pouvez le voir, dir2
avec son contenu est déplacé vers dir3
.

Vous pouvez déplacer plusieurs répertoires de la même manière.
Renommer des fichiers et des répertoires
Si vous souhaitez renommer un fichier ou un répertoire, vous pouvez utiliser la même commande mv.
mv filename new_name_in_same_or_new_location
Supposons que vous souhaitiez renommer un fichier au même emplacement. Voici un exemple où je renomme file_1
pour file_one
dans le même répertoire.

Vous pouvez également déplacer et renommer les fichiers. Il vous suffit de fournir le chemin du répertoire et le nom du fichier de destination. Ici, je renomme services
fichier à my_services
tout en le déplaçant vers dir3
.
[email protected]:~/moving_files$ ls
dir dir1 dir3 file_2 file_3 file_one passwd services
[email protected]:~/moving_files$ mv services dir3/my_services
[email protected]:~/moving_files$ ls dir3
dir2 my_services
📋
Vous ne pouvez pas renommer plusieurs fichiers directement avec la commande mv. Vous devez le combiner avec d’autres commandes comme find etc.
Testez vos connaissances
Il est temps de mettre en pratique ce que vous venez d’apprendre.
Créez un nouveau dossier pour pratiquer l’exercice. Ici, créez une structure de répertoires comme celle-ci :
.
├── dir1
├── dir2
│ ├── dir21
│ ├── dir22
│ └── dir23
└── dir3
Copiez le fichier /etc/passwd dans le répertoire courant. Maintenant, renommez-le secrets
.
Créez trois nouveaux fichiers nommés file_1
, file_2
et file_3
. Déplacez tous les fichiers vers dir22
.
Déplacez maintenant le dir22
répertoire à dir3
.
Supprimer tout le contenu de dir2
maintenant.
Dans l’avant-dernier chapitre de la série Terminal Basics, vous apprendrez à modifier des fichiers dans le terminal. Restez à l’écoute.