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.
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/' *
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 :
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
Voir en ligne : Renommer une série de fichiers sous Unix (linuxfr.org)
Crée par: chris
Créé le: 12 avril 2017
Modifié le: 18 octobre 2017
Nombre de visites: 388
Popularité: 5 %
Popularité absolue: 1
2003-2024 LePpf
Plan du site
| Se connecter |
Contact |
RSS 2.0 |
Sur YouTube
Visiteurs connectés : 4
Nombre moyen de visites quotidiennes sur le site: 214