1. Modifier la date de création de fichiers photos
1.1. Description
La galerie photo de mon téléphone Android affiche les photos par date de modification des fichiers. Lors de la restauration d'une sauvegarde, les fichiers sont recréés et les photos sont donc affichées dans le désordre.
Comme la date de prise de la photo se trouve dans le fichier (données "EXIF"), j'aimerais écrire un script pour remettre de l'ordre dans tout ça.
1.2. Objectif
Il s'agit d'écrire une fonction shell qui prend une liste de fichiers en arguments et change la date de modification de chacun de ces fichiers en fonction des informations EXIF (Exchangeable image file format).
Si ces informations ne sont pas présentes, les méta-données des fichier ne sont pas modifiées.
Voici un exemple d'exécution :
$ source maj_dates.sh
$ ls -tr *.jpg
Belledonne_soleil.jpg Belledonne.jpg Bauges_Mont_Blanc.jpg Bauges_Belledonnes.jpg Bauges.jpg
$ maj_dates *.jpg
Modification du fichier Bauges.jpg
Modification du fichier Bauges_Belledonnes.jpg
Modification du fichier Bauges_Mont_Blanc.jpg
Modification du fichier Belledonne.jpg
Modification du fichier Belledonne_soleil.jpg
Fin de la fonction
$ ls -tr *.jpg
Belledonne.jpg Bauges.jpg Bauges_Belledonnes.jpg Bauges_Mont_Blanc.jpg Belledonne_soleil.jpg
Note, ls -tr
permet d'afficher la liste des fichiers dans
l'ordre chronologique de dernière modification.
1.3. Précisions
Vous pouvez utiliser les photos de cette archive (prises sur Wikipedia) pour tester votre fonction.
Commencez par lire les sections suivantes :
-
La date présente dans les données EXIF n'est pas au même format que celle acceptée par la commande
touch
. Les commandescut
ettr
peuvent être utiles : commandes cut et tr
1.4. Pour aller plus loin
-
Vous pouvez rajouter un compteur qui compte le nombre d'images modifiées : allez voir la section opérations arithmétiques en bash,
-
Afficher un petit message d'erreur lorsque aucun fichier n'est donné,
-
etc.