Site icon Maniac Geek

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.

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.

Source

Quitter la version mobile