[MontelLUG] Rinominazione jpeg modo posix
cesco
webmonster a apf.it
Mar 15 Feb 2005 13:57:39 CET
Allego la mia versione ufficiale con exiftags.
Tiene conto anche dell'ora dello scatto nell'ordinare le immagini.
Ho aggiunto nella posix una correzione (un -i al mv) che consente di
accorgersi se il programma vuole sovrascrivere file che hanno gia il
nome giusto, cosi' si puo' fermare il tutto, rilanciare il programma con
un prefisso e poi, al limite rilanciarlo ancora senza prefisso.
cesco
-------------- parte successiva --------------
#!/bin/sh
# Script per la rinominazione dei file
# della macchina fotografica con la data
# Parametri da linea si comando:
# N.1: Percorso che contiene i file
# N.2: Eventuale parte iniziale del nome da dare ai file
if [ "$1" == "" ];
then
echo "Sintassi: rinjpj-exiftags directory [prefisso]"
exit 1
fi
# togli lo spazio dai delimitatori
IFS=${IFS// /}
# cancella file datefoto.txt
if [ -f /tmp/datefoto.txt ];
then
rm /tmp/datefoto.txt
fi
# leggi date di creazione di tutte le jpg
for f in $1/*.jpg;
do
data=$(exiftags $f | grep 'Image Created:' | cut -c 16-34 | sed 's/:/-/g');
echo $data $f >> /tmp/datefoto.txt;
sort -o /tmp/datefoto.txt /tmp/datefoto.txt
done
# cicla per tutti i file jpg (anche se il nome contiene spazi) ordinati per data
for x in $(cat /tmp/datefoto.txt);
do
# memorizza nuova data
data=${x:0:10}
# confronta con la vecchia
if [ "$oldata" != "$data" ];
then
# se diverse reinizializza il contatore
c=0;
oldata=$data;
fi
# incremente il contatore
c=$[c+1];
# stampa il comando con numero incrementato preceduto da zeri per arrivare a 5 cifre
mv -i ${x:20} $1/$2$data\_$(echo "n=5; for (c=0; c<=l($c)/l(10); ++c) z=z; for (i=0; i<n-c; ++i) print(0);" | bc -l;)$c.jpg
done
-------------- parte successiva --------------
#!/bin/sh
# Script per la rinominazione dei file
# della macchina fotografica con la data
# Parametri da linea si comando:
# N.1: Percorso che contiene i file
# N.2: Eventuale parte iniziale del nome da dare ai file
if [ "$1" == "" ];
then
echo "Sintassi: rinjpg-posix directory [prefisso]"
exit 1
fi
# togli lo spazio dai delimitatori
IFS=${IFS// /}
# La lista dei file viene ordinata secondo la data
for FILE in $(ls -t $1/*.jpg);
do
# Prende la data del file
DATA=$(stat --format=%y $FILE | cut -c 1-10)
# confronta con la vecchia
if [ "$OLDATA" != "$DATA" ];
then
# se diverse reinizializza il contatore
NUM=0;
OLDATA=$DATA;
fi
# incremente il contatore
NUM=$[NUM+1];
# stampa il comando con numero incrementato preceduto da zeri per arrivare a 5 cifre
mv -i $FILE $1/$2$DATA\_$(echo "n=5; for (c=0; c<=l($NUM)/l(10); ++c) z=z;\
for (i=0; i<n-c; ++i) print(0);" | bc -l;)$NUM.jpg
done
More information about the montellug
mailing list