Pietro Toniolo

2006-08-31

cygwin shell: comando pass

Filed under: Cygwin, Software — ptoniolo @ 18:48:01

Ho definito nel mio bin il comando shell:
pass: d2u | tr '\n' '\0' | xargs -r0 "$@"
che, eventualmente con l’appoggio di questo:
lf: ls -AldF "$@"
consente di gestire elegantemente le situazioni con dei file i cui nomi contengono spazi, cosa purtroppo molto frequente negli ambienti basati su Window$.

Provate per esempio:
type -ap vi | pass lf
o ancora:
type -ap procexp.exe | pass lf
o anche:
cygcheck -l time | pass lf

2006-08-29

exiftool

Filed under: Photo, Software — ptoniolo @ 18:28:21

Ho trovato un’utility niente male per leggere e manipolare in modo massivo gli attributi Exif delle foto. La trovate qui.

Si tratta di un’utility command-line, in pratica uno script Perl. La sintassi dei comandi è mostruosa, ma comunque funziona.

In particolare a me è servita perché ho fatto un paio di cazzate:

  • quest’anno mi sono dimenticato di fare sulla mia Canon S80 il passaggio all’ora legale
  • sono stato in Turchia, che ha un’ora in più dell’Italia, e mi sono dimenticato di sistemare l’ora o di cambiare il tipo di time registrato

Mi sono quindi trovato con alcune foto con un’ora meno di quanto avrebbero dovuto mostrare, altre con due. Sia come data del file, che per le varie date registrate nei tag Exif. Con questo strumento, ho messo le foto di cui cambiare la data in una cartella a parte (per poterle manipolare con *.JPG) e ho emesso questi comandi:

	exiftool -AllDates+=1 *.JPG
	exiftool '-DateTimeOriginal>FileModifyDate' *.JPG


in cui il primo cambia tutte le date dei tag Exif di un’ora in più (per le foto della Turchia ho ovviamente fatto -AllDates+=2). I due comandi dati insieme non funzionano: il secondo comando evidentemente prende il tag DateTimeOriginal prima della variazione! Questo aggiusta le date delle foto (IMG_*.JPG) e anche degli stitch (ST?_*.JPG) ma non le date dei filmati. Non so come faccia la vostra Canon, ma la mia, oltre al file .AVI, aggiunge un file di tipo .THM, che in pratica contiene i tag Exif del filmato, ed è modificabile da exiftool. Quindi se avete filmati si deve dare in pasto al programma anche i file *.THM oltre ai *.JPG, e a questo punto manca solo di cambiare la data del file AVI, cosa che con cygwin si può fare con un comando tipo:

	for i in *.THM
	do
		touch -r $i $(basename $i .THM).AVI
	done


Purtroppo, all’interno dei file avi esiste anche un tag DateTimeOriginal, che non viene modificato, dato che exiftool non può scrivere nei file in formato RIFF, perlomeno non in questa versione…

Un’ultima cosa: se volete distribuire le foto in cartelle con la data, potete farlo anche con exiftool:

	exiftool -P '-Directory<DateTimeOriginal' -d %Y-%m-%d *.JPG


So che ci sono molti modi per fare la stessa cosa, ma questo si può fare a command line, quindi è scriptabile eccetera…

Blog at WordPress.com.