Comment utiliser la commande rename sous Linux

Contenu

Ordinateur portable Linux affichant une invite bash

Familiarisez-vous avec la puissance de renommage des fichiers du monde Linux et fournissez mv—Et toi— une pause. Rename c'est souple, vite et, parfois, encore plus facile. Voici un tutoriel de cette puissante commande.

Qu'en est-il de mv?

Il n'y a rien de mal à mv . La commande fait bon travail, et on le trouve dans toutes les distributions Linux, sur macOS et autres systèmes d'exploitation de type Unix. C'est pourquoi il est toujours activé. Mais de temps en temps tu as juste besoin d'un bulldozer, pas une pelle.

Les mv La commande a un but dans la vie et c'est de déplacer des fichiers. C'est un effet secondaire heureux qui peut ê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 on obtient ce qu'on veut. Mais mv pas un outil de renommage de fichier dédié.

Renommer un seul fichier avec mv

Utilisation mv pour renommer un type de fichier mv, un espace, le nom du fichier, un espace et le nouveau nom que vous voulez que le fichier ait. Puis appuyez sur Entrée.

Vous pouvez utiliser ls pour vérifier que le nom du fichier a été modifié.

mv ancienfichier.txt nouveaufichier.txt
ls *.txt

Renommer plusieurs fichiers avec mv

Les choses se compliquent lorsque vous souhaitez renommer plusieurs fichiers. mv n'a pas la possibilité de renommer plusieurs fichiers. Vous devez recourir à quelques astuces astucieuses de bash. C'est bien si vous connaissez une ligne de commande de qualité moyenne fu, mais la complexité de renommer plusieurs fichiers avec mv contraste avec la facilité d'utilisation mv renommer un seul fichier.

Les choses dégénèrent rapidement.

Disons que nous avons un répertoire avec une gamme de fichiers, de différentes sortes. Certains de ces fichiers ont une extension “.programme”. Nous voulons les renommer sur la ligne de commande afin qu'ils aient une extension “.prg”.

Comment combattons-nous? mv faire ça pour nous? Jetons un œil aux archives.

ls * .prog -l

Voici un moyen de le faire qui ne recourt pas à l'écriture d'un véritable fichier de script bash.

pour f dans *.prog; faire mv -- "$F" "${f%.prog}.prg"

Ça a marché? Parcourons les fichiers et voyons.

ls *.pr*

Ensuite, Oui, ça a marché. Maintenant ce sont tous des fichiers “.prg” et il n'y a pas de fichiers “.programme” Dans le carnet d'adresses.

Qu'est-ce qui vient juste de se passer?

Qu'est-ce que cette longue commande a vraiment fait? Analysons-le.

pour f dans *.prog; faire mv -- "$F" "${f%.prog}.prg"

La première partie démarre une boucle qui traitera chaque fichier “.programme” Dans le carnet d'adresses, en même temps.

La partie suivante indique ce que le traitement va faire. faire. Utilise mv pour déplacer chaque fichier vers un nouveau fichier. Le nouveau fichier sera nommé avec le nom de fichier d'origine à l'exclusion de la pièce “.programme”. À sa place, une nouvelle extension de “.prg”.

Il doit y avoir un moyen plus simple

Absolument. C'est lui rename commander.

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

sur les distributions dérivées d'Ubuntu et Debian que vous installez rename comme ça:

sudo apt-get install renommer

Dans les distributions dérivées de Fedora et RedHat, installer prename comme ça. Veuillez noter le “p” initiale, ce qui veut dire Perl.

sudo dnf installer le prénom

Pour l'installer sur Manjaro Linux utilisez la commande suivante. Notez que la commande rename est appelée perl-rename.

sudo pacman -Syu perl-renommer

Faisons le encore

Et cette fois, nous utiliserons rename. Nous allons remonter le temps pour avoir un ensemble de fichiers “.programme”.

ls * .prog

Utilisons maintenant la commande suivante pour les renommer. Plus tard, nous le vérifierons avec ls oui ça a marché. N'oubliez pas de remplacer rename avec 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*

Ça a marché, maintenant ce sont tous des fichiers “.prg” et il n'y a pas de fichiers “.programme” Dans le carnet d'adresses.

Que s'est-il passé à ce moment?

Expliquons ce petit peu de magie, en trois parties.

Les premier part est le nom de la commande, rename (O prename O perl-rename , pour les autres distributions).

Les dernier une partie est *.prog, que dit-il rename pour opérer sur tous les fichiers “.programme”.

Les demi part définit le travail que nous voulons faire sur chaque nom de fichier. Les s signifie substitut. Le premier terme (.prog) Qu'est que c'est rename recherchera chaque nom de fichier et deuxième terme (.prg) est ce qui sera remplacé.

La partie centrale de la commande, ou expression centrale, est un Perl ‘expression régulière‘Et c’est ce qui donne le rename maîtriser votre flexibilité.

Modifier d'autres parties d'un nom de fichier

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

Il y a beaucoup de fichiers de code source C dans le répertoire. Tous les noms de fichiers ont le préfixe “argot_”. Nous pouvons vérifier cela avec ls.

ls sl*.c

Nous remplacerons toutes les occurrences de “argot_” avec “sl_”. Le format de la commande nous est déjà familier. Nous changeons seulement le terme de recherche, le terme de remplacement et le type de fichier.

renommer 's/argot_/sl_' *.c

Cette fois, nous recherchons des fichiers “.c” et nous cherchons “argot_”. Chaque fois qu'il est trouvé “argot_” dans un nom de fichier, est remplacé par “sl_”.

Nous pouvons vérifier le résultat de cette commande en répétant la ls commande d'en haut 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

Nous pouvons voir de la ls commande que tous nos fichiers “.c” sont précédés de “sl_”. Débarrassons-nous-en complètement.

Les rename La commande suit le même format que précédemment. Nous allons rechercher des fichiers “.c”. 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 veulent rien dire, une chaîne vide.

rename traitera chaque fichier “.c” en même temps. va chercher “sl_” dans le nom du fichier. Si trouvé, ne sera remplacé par rien. En d'autres termes, le terme de recherche est supprimé.

La deuxième utilisation de ls La commande confirme que le préfixe “sl_” a été supprimé de tous les fichiers “.c”.

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

Utilisons ls pour afficher les fichiers contenant la chaîne “paramètre” dans votre nom de fichier. Ensuite, nous utiliserons rename pour remplacer cette chaîne par la chaîne “paramètre”. nous utiliserons ls une fois de plus pour voir l'effet rename commande avait dans ces fichiers.

ls * param *
renommer 's/param/paramètre' *.c
ls * param *

Il y a quatre fichiers qui ont “paramètre” dans votre nom de fichier. param.c, param_one.c et param_two.c disponen “paramètre” dans le début de son nom. Third_param.c tiene “paramètre” dans le fin de son nom, juste avant la prolongation.

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

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

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

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

ls *stop*.c
renommer 's/^parameter/value/' *.c
ls *stop*.c
valeur ls*.c

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

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

Vérification avec ls, nous pouvons voir que le nom de fichier qu'il avait “paramètre” dans le fin le nom du fichier n'a pas été modifié, mais les trois noms de fichiers qui avaient “paramètre” dans le début de leurs noms, la chaîne de recherche a été remplacée par le terme de substitution “valeur”.

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

Rechercher avec des clusters

rename a encore plus d'astuces dans son sac. Considérons le cas où vous pouvez 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 remplacement ne fonctionnera pas ici.

Dans cet exemple, nous utilisons ls pour vérifier quels fichiers nous avons qui commencent par “str”. Il y a deux d'entre eux, string.cy étrangler.c. Nous pouvons renommer les deux chaînes en même temps en utilisant une technique appelée regroupement.

L'expression centrale de cette rename La commande recherchera les chaînes dans les noms de fichiers qui ont la séquence de caractères “Stri” O “Stra” où ces séquences sont immédiatement suivies par “ng”. En d'autres termes, notre terme de recherche cherchera “chaîne” Oui “Étrangler”. Le terme de substitution est “claquer”.

ls str*.c
renommer 's/(stri|stra)de/bang/' *.c
Est-ce que vous*.c

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

Utilisation de traductions avec changement de nom

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

Dans le rename commande ci-dessous notez que nous n'en utilisons pas s/ pour commencer l'expression centrale, nous utilisons y/. Cela dit rename nous ne faisons pas de substitution; nous faisons une traduction.

Les a-z term est une expression Perl qui signifie tous les caractères minuscules dans la séquence de a à z. De la même manière, les A-Z terme représente toutes les lettres majuscules dans la séquence de A à Z.

L'expression de base de cette commande pourrait être paraphrasée comme “si l'une des lettres minuscules de a à z se trouve 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 fichiers “.prg” majuscule, utilise cette commande:

renommer 'y / les / de A à Z /’ * .prg

ls * .PRG

Les ls La commande nous montre que tous les noms de fichiers “.prg” sont maintenant en majuscule. En réalité, pour être strictement précis, ce ne sont plus des fichiers “.prg”. ce sont des fichiers “.GRP”. Linux est sensible à la casse.

Nous pouvons inverser cette dernière commande en inversant la position du a-z Oui A-Z termes dans l'expression centrale.

renommer 'y / LES / les /’ * .GRP

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 du rename commander, vous n'avez pas besoin de beaucoup de connaissances de Perl pour obtenir de grands avantages potentiels, simplicité et temps.

setTimeout(fonction(){
!fonction(F,b,e,v,m,t,s)
{si(f.fbq)revenir;n=f.fbq=fonction(){n.callMethod?
n.callMethod.apply(m,arguments):n.queue.push(arguments)};
si(!f._fbq)f._fbq=n;n.push=n;n.chargé=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertAvant(t,s) } (window, document,'scénario',
'https://connect.facebook.net/en_US/fbevents.js’);
fbq('init', « 335401813750447 »);
fbq('Piste', « Page View »);
},3000);

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.