Déplacer et renommer des fichiers dans le terminal Linux est rapide et indolore, mais vous devez d’abord comprendre comment le faire. Que vous soyez assis devant la machine ou connecté à distance via SSH, ce sont les commandes qui déplaceront les fichiers sur votre machine.
Dans ce tutoriel, nous allons apprendre les bases de m.v., une commande qui déplace et renomme les fichiers. Nous apprendrons également quelques arguments avancés pour cette commande, arguments qui permettront d’améliorer son utilisation et de nous faciliter la vie.
Ces commandes fonctionneront sur la plupart des machines Linux. Notre PC de test exécutait Kubuntu 21.10, mais vous pouvez également parcourir ce tutoriel sur un Tarte aux framboises. Toutes les procédures sont effectuées via le terminal.
Renommer un seul fichier
Commençons simplement avec un seul fichier que nous allons renommer. La syntaxe de la commande est structurée comme suit.
mv <original name> <new name>
1. Créez un nouveau fichier nommé file1.txt.
$ touch file1.txt
2. Renommez fichier1.txt en nouveaufichier1.txt. La commande mv peut être utilisée sur des fichiers dans le même répertoire, ou avec des fichiers dans d’autres emplacements.
$ mv file1.txt newfile1.txt
3. Listez le contenu du répertoire pour voir le nouveau fichier. Vous devriez maintenant voir newfile1.txt.
$ ls
Déplacer un fichier
L’utilisation principale de la commande mv est de déplacer des fichiers et la syntaxe est identique au renommage. Nous avons une source et une cible.
Déplaçons un fichier dans un sous-répertoire.
1. Créez un nouveau répertoire, MoveFilesHere.
$ mkdir MoveFilesHere
2. Créez un nouveau fichier vierge à l’aide de la commande touch. Touch peut être utilisé pour créer n’importe quel type de fichier, mais jusqu’à ce qu’il contienne les données correctes à l’intérieur, ce n’est vraiment qu’une coquille vide.
$ touch blankfile.txt
3. Utilisez la commande mv pour déplacer le fichier dans le sous-répertoire MoveFilesHere. Nous spécifions la source, blankfile.txt puis la cible qui peut être un répertoire (comme c’est le cas ici) ou nous pouvons déplacer le fichier dans un nouveau répertoire avec un nouveau nom en passant l’emplacement cible et le nom de fichier prévu.
$ mv blankfile.txt MoveFilesHere/
Cela suppose que le répertoire MoveFilesHere se trouve directement sous le répertoire dans lequel se trouve blankfile.txt. Si vous déplacez votre fichier vers un répertoire qui se trouve à un niveau différent, vous devrez peut-être spécifier le chemin complet (ex : /home/pi/scripts) . Vous pouvez également déplacer un fichier vers son répertoire parent en utilisant ../ comme dossier de destination.
Utilisez la commande ls pour vérifier que le fichier a été déplacé avec succès. Ici, nous passons la commande ls (list) au paramètre supplémentaire qui est le répertoire dans lequel regarder.
$ ls MoveFilesHere/
Si nous voulions déplacer un fichier et changer son nom, nous passerions la cible et fournirions le nom de fichier prévu. Donc, en modifiant l’exemple ci-dessus pour déplacer blankfile.txt dans MoveFilesHere et le renommer en namechanged.txt, nous utiliserions la commande suivante.
$ mv blankfile.txt MoveFilesHere/namechanged.txt
Comment renommer un lot de fichiers sous Linux
Il viendra un moment où nous devrons renommer plusieurs fichiers en même temps. Le renommage par lots est géré à l’aide de la commande mv, mais nous utilisons un script Bash d’une ligne pour parcourir les fichiers que nous souhaitons renommer.
1. Créez un lot de fichiers à expérimenter. Cette commande générera 26 fichiers, de a à z.txt.
$ touch a..z.txt
2. Renommez tous les fichiers de .txt en .log. Nous utilisons une boucle for qui crée une variable (f) et parcourt tous les fichiers txt (*.txt), en remplaçant la valeur de la variable ($f est la façon dont nous appelons la variable) par le nom du fichier qui est ensuite renommé de .txt en .log (en utilisant le (f%.txt} comme opérateur de correspondance de modèle pour le nom de fichier stocké dans la variable f). À la fin de la commande, nous utilisons « done » pour signifier la fin de la boucle for. « — » partie du code indique où la première partie de la boucle for, sélectionnant le fichier à renommer, se termine, et où la deuxième partie, renommant le fichier, commence.
$ for f in *.txt; do mv -- "$f" "$f%.txt.log"; done
Explorer la commande Linux MV
La commande mv a un certain nombre d’arguments utiles (paramètres) que nous pouvons passer lors de l’utilisation de la commande. Voici quelques exemples.
Si vous avez besoin d’une invite interactive lors du déplacement de fichiers, disons qu’il peut y avoir un fichier identique dans le nouveau répertoire, l’argument -i demandera une décision lorsqu’un conflit est trouvé.
$ mv -i blankfile.txt MoveFilesHere
Le contraire d’une invite interactive est l’endroit où nous forçons la commande à écraser les fichiers. Vérifiez évidemment l’emplacement cible avant d’invoquer cette commande.
$ mv -f blankfile.txt MoveFilesHere
Que se passe-t-il si nous voulons déplacer nos fichiers, mais sans écraser les fichiers existants ? Pour cela, nous avons besoin de –no-clobber (-n). Cette commande copiera volontiers les fichiers, mais ignorera tous les fichiers existants dans le répertoire cible.
$ mv -n blankfile.txt MoveFilesHere
Besoin de déplacer uniquement les fichiers qui ont été mis à jour ? L’argument -u vérifiera que le fichier source (celui que nous souhaitons copier) est plus récent que le fichier cible. Utile pour déplacer des fichiers journaux et des sauvegardes incrémentielles de documents.
$ mv -u blankfile.txt MoveFilesHere
Enfin, si nous voulons voir quels fichiers sont déplacés, nous pouvons utiliser l’argument -v (verbeux) pour afficher les noms des fichiers au fur et à mesure qu’ils sont copiés. Utile pour les débogages rapides et pour avoir l’air occupé dans le centre de données.
$ mv -v blankfile.txt MoveFilesHere