Renommer les fichiers JPEG avec la date de capture
Les appareils photo numériques utilisent souvent un nombre incrémental pour nommer les fichiers. Je préfère que le nom indique la date et l’heure plutôt qu’un nombre insignifiant comme P1020729.JPG
. Aussi selon que le fichier provienne de mon téléphone intelligent ou de mon appareil photo, l’extension varie de .JPG à .jpg. Le script ci-dessous résoud ces deux problèmes automatiquement.
J’utilise l’outil jhead pour lire l’entête Exif:
# pkg_add jhead
$ cat ~/bin/renommer-date
#!/bin/ksh
#
## Script pour renommer les fichiers JPEG avec la date et l'heure de capture
renommer() {
filename=$1
# Lire la date et heure de l'entête Exif, retirer les espaces et TAB au début et à la fin
datetime="$(jhead $filename | grep 'Date/Time' | awk 'BEGIN { FS="[:]"} \
{print $2$3$4$5$6}' | sed 's/^[ ]*//;s/[ ]*$//' )"
date="$(echo $datetime | cut -d ' ' -f 1)"
heure="$(echo $datetime | cut -d ' ' -f 2)"
gdt="$date"_"$heure"
nom="$(echo $filename | awk -F"." '{print $1}')"
extension="$(echo $filename | awk -F"." '{print $NF}')"
# Valider qu'il s'agit d'une image JPEG
if [ $(echo $extension | grep -E "jpg|JPG|jpeg|JPEG") ];
then
# Renommer le fichier RAW s'il existe
if test -f $nom.RW2; then
mv $nom.RW2 $gdt.RW2;
fi
# Renommer le fichier JPEG
mv $filename $gdt.jpg;
else
echo "$filename n'est pas un fichier JPEG";
fi
}
for file in "$@";
do
renommer "$file";
done
Références:
http://www.sentex.net/~mwandel/jhead/
gPhoto
Le logiciel gphoto
disponible dans les ports permet d’importer les photos et de les renommer automatiquement avec l’argument gphoto --filename
[source]. Il faut par contre donner les droits à l’utilisateur pour le port USB.
La technique présentée ici a l’avantage de pouvoir copier les photos d’une caméra numérique avec les commandes du système OpenBSD de base sans installer de port.
Par Philippe St-Jacques