commandes shells


Renommer un groupe de fichiers

Décrit comment renommer un groupe de fichiers en ligne de commandes

Nous avons souvent besoin de renommer un groupe de fichiers selon certaines règles et rien de tel que la ligne de commande pour le faire lorsque ce groupe est important et si la règle de renommage est complexe.


 Utilisation de la commande ’rename’

Syntaxe générale

La syntaxe de la commande est la suivante :

$>rename [-v] [-n] [-f] perlexpr [fichiers]

L’expression PERL aura généralement du type

’lettre/expression_de_recherche/valeur_de_remplacement/’

Le tableau suivant donne les explications pour chaque option :

Option Explication
-v Mode verbeux. Le programme affiche ce qu’il fait
-n Permet de simuler l’exécution de la fonction pour la tester avant avant de lancer son exécution.
-f Force l’écrasement de fichiers lors du traitement lorsque des fichiers ayant le même nom existent.

Remarque : L’utilisation des options -v et -n sont utiles pour vérifier une commande avant de l’exécuter.

Exemple 1 : changer l’extension d’un groupe de fichier

Nous avons dans un dossier une série de fichiers ayant l’extension .jpeg parmi d’autres ayant l’extension .jpg et nous désirons qu’ils aient tous la même extension. La commande est la suivante :

$>rename 's/\.jpeg$/\.jpg/' *

L’expression PERL est composé de :

s : veut dire que l’on va effectuer une rechercher/remplacement

Le filtre de recherche est compris entre les 2 "/ /"

\. L’antislash veut dire de prendre le caractère suivant non pas comme un caractère spécial mais comme le caractère point.

.jpeg$ : le $ indique que l’on recherche les mots qui se terminent pas ".jpeg"

Exemple 2 : remplacer les espaces par "_"

Nous utilisons de plus en plus des caractères spéciaux comme les lettres accentuées, ou les espaces dans les noms de fichiers qui peuvent poser problèmes lors de certains traitement informatiques. Si l’on désire remplacer tous les espaces dans les noms des fichiers contenus dans le répertoire courant par un ’_’, on peut saisir la commande suivante :

$>rename 'y/ /_/' *

Le y indique de remplacer chaque caractères recherchés (un espace dans l’exemple) par les caractères de remplacement (_ dans l’exemple).

Exemple 3 : Passer tous les caractères en minuscules

La commande suivante passe tous les caractères en minuscules pour l’ensemble des noms de fichiers du répertoire courant :

$>rename 'y/A-Z/a-z/' *

 Utilisation d’une boucle for

La commande rename n’est pas toujours disponible par défaut mais ont peut renommer des fichiers par lots en utilisant un mini script composé d’une boucle for.

Exemple : remplacer une partie du nom par une autre

Supposons que nous désirions remplacer une partie de nom de fichiers par un autre. Nous allons utiliser les possibilités de l’expansion avec des caractères spéciaux.

Voici d’abord un exemple d’expansion :

La commande suivante effectue une copie du fichier XXXr.bak dans XXXr.jpg

$>cp XXXr.{bak,jpg}

Prenons l’exemple d’un dossier contenant entre autre, les fichiers suivant :

et que nous désirions avoir :

if suffit de taper la commande suivante :

for i in aaa*;do mv $i XXX${i#aaa};done

Le # indique de retirer le plus petit fragment à gauche

Et pour remplacer l’extension .jpg par bak, on peut taper :

$>for i in *.jpg; do mv $i ${i%jpg}bak;done

Le % indique de retirer le plus petit fragment à droite.

et nous obtenons maintenant :

 Conclusion

Nous venons de voir quelques exemples d’application de commandes du shell. Pour avoir des explications sur certaines syntaxes utilisées ici, vous pourrez sur ce site l’article Substitution de variables


Article n° 87

Crée par: chris

Créé le: 12 avril 2017

Modifié le: 18 octobre 2017

Nombre de visites: 377

Popularité: 9 %

Popularité absolue: 1

Mots clés de cet article


SPIP

2003-2021 LePpf
Plan du site | | Contact | RSS 2.0 | Sur YouTube

Visiteurs connectés : 0

Nombre moyen de visites quotidiennes sur le site: 162