Comment utiliser la commande rename sur Linux

0
233
fatmawati achmad zaenuri/Shutterstock.com

Familiarisez-vous avec la centrale de renommage de fichiers du monde Linux et reposez-vous, ainsi que vous-même. Renommer est flexible, rapide et parfois même plus facile. Voici un tutoriel sur cette centrale de commande.

Qu'est-ce qui ne va pas avec mv ?

Il n'y a rien de mal avec mv . La commande fait du bon travail et se trouve sur toutes les distributions Linux, sous macOS et dans d'autres systèmes d'exploitation de type Unix. Il est donc toujours disponible. Mais parfois, vous avez juste besoin d'un bulldozer, pas d'une pelle.

La commande mv a un but dans la vie, et c'est de déplacer des fichiers. C'est un effet secondaire heureux qu'il puisse être utilisé pour déplacer un fichier existant dans un nouveau fichier, avec un nouveau nom. L'effet net est de renommer le fichier, donc nous obtenons ce que nous voulons. Mais mv n'est pas un outil de renommage de fichier dédié.

Renommer un seul fichier avec mv

Pour utiliser mv pour renommer un fichier, tapez mv, un espace, le nom du fichier, un espace et le nouveau nom que vous souhaitez que le fichier ait. Appuyez ensuite sur Entrée.

Vous pouvez utiliser ls pour vérifier que le fichier a été renommé.

mv oldfile.txt newfile.txt ls *.txt

Renommer plusieurs fichiers avec mv

Les choses se compliquent lorsque vous souhaitez renommer plusieurs fichiers. mv n'a pas la capacité de gérer le renommage de plusieurs fichiers. Vous devez recourir à quelques astuces astucieuses de Bash. C'est bien si vous connaissez des fu de ligne de commande de qualité moyenne, mais la complexité de renommer plusieurs fichiers avec mv contraste fortement avec la facilité d'utilisation de mv pour renommer un seul fichier.

Les choses dégénèrent rapidement.

Publicité

Disons que nous avons un répertoire contenant une variété de fichiers, de types différents. Certains de ces fichiers ont un “.prog” extension. Nous voulons les renommer sur la ligne de commande afin qu'ils aient un “.prg” rallonge.

Comment pouvons-nous convaincre mv de le faire pour nous ? Jetons un coup d'œil aux fichiers.

ls *.prog -l

Voici une façon de le faire sans avoir recours à l'écriture d'un véritable fichier de script Bash.

pour f dans *.prog; do mv — “$f” “${f%.prog}.prg”

Cela a fonctionné ? Vérifions les fichiers et voyons.

ls *.pr*

Alors oui, ça a marché. Ils sont tous “.prg” maintenant, et il n'y a pas de “.prog” fichiers dans le répertoire.

Qu'est-ce qui vient de se passer ?

Qu'est-ce que cette longue commande a réellement fait ? Décomposons-le.

pour f dans *.prog; do mv — “$f” “${f%.prog}.prg” Publicité

La première partie démarre une boucle qui va traiter chaque “.prog” fichier dans le répertoire, à son tour.

La partie suivante indique ce que le traitement va faire. Il utilise mv pour déplacer chaque fichier vers un nouveau fichier. Le nouveau fichier sera nommé avec le nom du fichier d'origine à l'exclusion du  “.prog” partie. Une nouvelle extension de “.prg” sera utilisé à la place.

Il doit y avoir un moyen plus simple

Très certainement. C'est la commande de renommage.

rename ne fait pas partie d'une distribution Linux standard, vous devrez donc l'installer. Il a également un nom différent dans différentes familles de Linux, mais ils fonctionnent tous de la même manière. Vous n'aurez qu'à remplacer le nom de la commande appropriée en fonction de la version Linux que vous utilisez.

dans les distributions dérivées d'Ubuntu et de Debian, vous installez le renommer comme ceci :

sudo apt-get install rename

Dans les distributions dérivées de Fedora et RedHat, vous installez un prénom comme celui-ci. Notez le “p,” qui signifie Perl.

sudo dnf install prename

Pour l'installer dans Manjaro Linux, utilisez la commande suivante. Notez que la commande de changement de nom s'appelle perl-rename.

sudo pacman -Syu perl-rename

Faisons ça encore

Et cette fois, nous allons utiliser renommer. Nous allons reculer l'horloge afin d'avoir un ensemble de “.prog” fichiers.

ls *.prog

Publicité

Utilisons maintenant la commande suivante pour les renommer. Nous allons ensuite vérifier avec ls si cela a fonctionné. N'oubliez pas de remplacer renommer par le nom de commande approprié pour votre Linux si vous n'utilisez pas Ubuntu ou un Linux dérivé de Debian.

renommer 's/.prog/.prg/' *.prog ls *.pr *

Cela a fonctionné, ils sont maintenant tous “.prg” et il n'y a pas de “.prog” fichiers laissés dans le répertoire.

Que s'est-il passé cette fois ?

Expliquons ce peu de magie, en trois parties.

La première partie est le nom de la commande, rename (ou prename ou perl-rename , pour les autres distributions).

La dernière partie est *.prog, qui indique rename pour opérer sur tous les “.prog” fichiers.

La partie centrale définit le travail que nous voulons faire sur chaque nom de fichier. Le s signifie substitut. Le premier terme (.prog) est ce que rename recherchera dans chaque nom de fichier et le deuxième terme (.prg) est ce par quoi il sera remplacé.

Publicité

La partie centrale de la commande, ou expression centrale, est une ‘expression régulière‘ et c'est ce qui donne à la commande rename sa flexibilité.

Modification d'autres parties d'un nom de fichier

Nous avons changé les extensions de noms de fichiers jusqu'à présent, modifions d'autres parties des noms de fichiers.

Dans le répertoire se trouvent de nombreux fichiers de code source C. Tous les noms de fichiers sont préfixés par “argot_”. Nous pouvons vérifier cela avec ls.

ls sl*.c

Nous allons tout remplacer occurrences de “argot_” avec “sl_”. Le format de la commande nous est déjà familier. Nous ne faisons que changer le terme de recherche, le terme de remplacement et le type de fichier.

renommer 's/slang_/sl_' *.c

Cette fois, nous recherchons “. c” fichiers et en recherchant “argot_”. Chaque fois que “argot_” se trouve dans un nom de fichier, il est remplacé par “sl_”.

Nous pouvons vérifier le résultat de cette commande en répétant la commande ls ci-dessus avec les mêmes paramètres :

ls sl*.c

Supprimer une partie d'un nom de fichier

Nous pouvons supprimer une partie d'un nom de fichier en remplaçant le terme de recherche par rien.

ls *. c renommer 's/sl_//' *.c ls *.c

Publicité

Nous pouvons voir à partir de la commande ls que notre “.c” les fichiers sont tous précédés de “sl_”. Débarrassons-nous complètement de cela.

La commande renommer suit le même format que précédemment. Nous allons chercher “.c” des dossiers. Le terme de recherche est “sl_”, mais il n'y a pas de terme de substitution. Deux barres obliques inverses sans rien entre elles ne signifient rien, une chaîne vide.

renommer traitera chaque “.c” dossier à son tour. Il recherchera “sl_” dans le nom de fichier. S'il est trouvé, il sera remplacé par rien. En d'autres termes, le terme de recherche est supprimé.

La deuxième utilisation de la commande ls confirme que le “sl_” le préfixe a été supprimé de chaque “.c” fichier.

Limiter les modifications à des parties spécifiques des noms de fichiers

Utilisons ls pour examiner les fichiers contenant la chaîne “param” dans leur nom de fichier. Ensuite, nous utiliserons renommer pour remplacer cette chaîne par la chaîne “paramètre”. Nous utiliserons ls une fois de plus pour voir l'effet que la commande renommer a eu sur ces fichiers.

ls *param* rename 's/param/parameter' *.c ls *param*

Publicité

Quatre fichiers contenant “param” dans leur nom de fichier. param.c, param_one.c et param_two.c ont tous “param” au début de leur nom. Third_param.c a “param” à la fin de son nom, juste avant l'extension.

La commande rename va rechercher “param” partout dans le nom du fichier et remplacez-le par “paramètre” dans tous les cas.

La deuxième utilisation de la commande ls nous montre que c'est exactement ce qui s'est passé. Si “param” était au début ou à la fin du nom de fichier, il a été remplacé par “paramètre.”

Nous pouvons utiliser les métacaractères de Perl pour affiner le comportement de l'expression du milieu. Les métacaractères sont des symboles qui représentent des positions ou des séquences de caractères. Par exemple, ^ signifie “début d'une chaîne,” $ signifie “fin d'une chaîne,” et . signifie n'importe quel caractère unique (à l'exception d'un caractère de nouvelle ligne).

Nous allons utiliser le métacaractère de début de chaîne ( ^ ) pour restreindre notre recherche au début des noms de fichiers.

ls *param*.c renommer 's/^parameter/value/' *.c ls *param*.c ls value*.c

Les fichiers que nous avons renommés précédemment sont répertoriés et nous pouvons voir la chaîne “parameter” se trouve au début de trois noms de fichiers et à la fin de l'un des noms de fichiers.

Publicité

Notre commande de renommage utilise le métacaractère de début de ligne (^)  avant le terme de recherche “paramètre.” Cela indique à renommer de ne considérer que le terme de recherche trouvé s'il se trouve au début du nom de fichier. La chaîne de recherche “paramètre” sera ignoré s'il se trouve ailleurs dans le nom de fichier.

En vérifiant avec ls, nous pouvons voir que le nom de fichier qui avait le “paramètre” à la fin du nom de fichier n'a pas été modifié, mais les trois noms de fichiers qui avaient “paramètre” au début de leurs noms, la chaîne de recherche a été remplacée par le terme de substitution “value.”

Le pouvoir de renommer réside dans le pouvoir de Perl. Toute la puissance de Perl est à votre disposition.

Recherche par groupes

rename a encore plus d'astuces dans son sac. Considérons le cas où vous pourriez avoir des fichiers avec des chaînes similaires dans leurs noms. Ce ne sont pas exactement les mêmes chaînes, donc une simple recherche et substitution ne fonctionnera pas ici.

Dans cet exemple, nous utilisons ls pour vérifier quels fichiers nous avons qui commencent par &#8220 ;str”. Il y en a deux, string.c et strangle.c. Nous pouvons renommer les deux chaînes à la fois en utilisant une technique appelée regroupement.

L'expression centrale de cette commande de renommage recherchera les chaînes dans les noms de fichiers qui ont la séquence de caractères “stri” ou “stra” où ces séquences sont immédiatement suivies de “ng”. En d'autres termes, notre terme de recherche va rechercher “string” et “étrange”. Le terme de substitution est “bang”.

ls str*.c renommer 's/(stri|stra)ng/bang/' *.c ls ban*.c

Publicité

L'utilisation de ls une deuxième fois confirme que string.c est devenu bang.c et strangle.c est maintenant bangle.c .

Utiliser des traductions avec renommer

La commande rename peut effectuer des actions sur les noms de fichiers appelées traductions. Un exemple simple de traduction serait de forcer un ensemble de noms de fichiers en majuscules.

Dans la commande de renommage ci-dessous, notez que nous n'utilisons pas de s/pour démarrer l'expression centrale, nous ; utilisez y/. Cela indique que nous n'effectuons pas de substitution ; nous effectuons une traduction.

Le terme a-z est une expression Perl qui désigne tous les caractères minuscules de la séquence de a à z. De même, le terme AZ représente toutes les lettres majuscules dans la séquence de A à Z.

L'expression centrale dans cette commande pourrait être paraphrasée comme “si l'une des lettres minuscules de a à z est trouvée dans le nom de fichier, remplacez-les par les caractères correspondants de la séquence de caractères majuscules de A à Z.”

Pour forcer les noms de fichiers de tous les “.prg” en majuscules, utilisez cette commande :

renommer ‘y/a-z/A-Z/’ *.prg

ls *.PRG

Publicité

La commande ls nous montre que tous les fichiers “.prg” les noms de fichiers sont maintenant en majuscules. En fait, pour être strictement exact, ils ne sont pas “.prg” fichiers plus. Ils sont “.PRG” des dossiers. Linux est sensible à la casse.

Nous pouvons inverser cette dernière commande en inversant la position des termes az et AZ dans l'expression centrale.

renommer ‘y/AZ/az /’ *.PRG

ls *.prg

Vous n'apprenez pas Perl en cinq minutes

Se familiariser avec Perl est du temps bien dépensé. Mais pour commencer à utiliser les capacités de gain de temps de la commande rename, vous n'avez pas besoin d'avoir beaucoup de connaissances Perl pour récolter de grands avantages en termes de puissance, de simplicité et de temps.

Fichiers de commandes Linux tar · pv · cat · tac · chmod · grep ·diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · queue · stat · ls · fstab · echo · moins · chgrp · chown · rev · regardez · les chaînes · tapez · renommer · zip · décompresser · monter · démonter · installer · fdisk · mkfs · rm · rmdir ·rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convertir · rclone · déchiqueter · srm Processes alias · écran · top · nice · renice · progrès · strace · systemd ·tmux · chsh · historique · à · lot · gratuit · quel · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat ·< /strong> timeout · mur · oui ·kill · sleep · sudo · su · heure · groupadd · usermod · groupes · lshw · shutdown · reboot · stop · poweroff · passwd · lscpu · crontab · date ·< /strong> bg · fg Netstat réseau · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · doigt · nmap · ftp · curl ·  wget · qui · whoami ·· iptables · ssh -keygen · ufw

CONNEXES : Meilleurs ordinateurs portables Linux pour les développeurs et les passionnés

LIRE LA SUITE

  • › Les lunettes à lumière bleue fonctionnent-elles ? Tout ce que vous devez savoir
  • › Gagnants du prix Best of CES 2022 de Geek : ce qui nous passionne
  • › Nouveautés de Chrome 97, disponibles dès maintenant
  • › Que signifie “NBD” La moyenne et comment l'utiliser ?
  • › Quel contenu 8K est réellement disponible ?
  • › 3 statistiques critiques que chaque joueur sur PC devrait surveiller