1. Renommer des fichiers photos

1.1. Description

Les photos prises par mon téléphone ont des noms pas très jolis : IMG_20160312_124305306.jpg, etc.. Pour les archiver, j'aimerais les renommer en WeekEnd_2016-02-12_16-35-12.jpg, WeekEnd_2016-02-12_16-36-24.jpg, etc.

1.2. Objectif

Dans l'exemple précédent, c'est l'utilisateur qui choisit explicitement le préfixe WeekEnd. La date et l'heure sont automatiquement ajoutées au nom de fichier.

Voici un exemple d'utilisation :

$ source ./renomme.sh
$ ls *.jpg
IMG_123456789.jpg  IMG_928332498.jpg  IMG_987654321.jpg
$ renomme Lac *.jpg
IMG_123456789.jpg  ==>  Lac_2015-08-30_16-52-52.jpg
IMG_928332498.jpg  ==>  Lac_2015-09-04_16-34-07.jpg
IMG_987654321.jpg  ==>  Lac_2015-08-30_16-53-27.jpg
$ ls *.jpg
Lac_2015-08-30_16-52-52.jpg  Lac_2015-08-30_16-53-27.jpg  Lac_2015-09-04_16-34-07.jpg

1.3. Précisions

Vous pouvez utiliser les photos de cette archive (prises sur Wikipedia) pour tester votre fonction.

Reportez vous aux sections

Vous aurez besoin de récupérer l'extension d'un fichier contenu dans une variable. Pour ceci, l'incantation magique suivante convient : si la variable s'appelle img, on peut faire

ext=${img##*.}

Attention, dans le shell, le symbole _ peut faire partie du nom d'une variable. Pour cette raisson, $img_$prefix ne sera pas interprété comme "la variable $img suivie d'un _ suivi de la variable $prefix", mais comme "la variable $img_ (qui n'existe probablement pas) suivie de la variable $prefix". La solution est de mettre le nom de la variable entre accolades : ${img}_$prefix.

1.4. Pour aller plus loin