[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