Come un debuttante di script bash, le risposte dettagliate sarebbero apprezzate. :)Come analizzare i timestamp EXIF con lo script Bash
Sto cercando di scrivere uno script bash che analizza JPEG EXIF time stamp uscita dal programma di utilità exiv2 commmandline, che mi dà uscita tipici come:
Immagine timestamp: 2010: 07: 27 17: 38:52
C'è un modo per analizzare il timestamp in modo che i suoi componenti, come anno, mese, giorno, ora, minuto, secondo, passino alle rispettive variabili?
Sarebbe bello/gawk essere la strada da percorrere? Se é cosi, come? O è un altro modo migliore?
In questo modo, posso manipolarlo o combinarlo come preferisco.
Ecco lo script che ho finora:
#!/bin/bash
COUNT=0
SKIPPED=0
FILES=0 # number of files encountered
# declare variables for time stamp
YEAR=0
MONTH=0
DAY=0
HOUR=0
MINUTE=0
SECOND=0
for CURRENT_FILE in * # a for loop to go through all files in current directory
do
if [ -f "$CURRENT_FILE" ] # see if CURRENT_FILE is a file
then
FILETYPE=$(file -b --mime-type "$CURRENT_FILE") # get file type
if [[ $FILETYPE == image/jpeg ]] # see if CURRENT_FILE's mime is image/jpeg
then
((COUNT++))
echo "Processing file $COUNT: $CURRENT_FILE"
exiv2 "$CURRENT_FILE" | grep timestamp >> list
else
((SKIPPED++))
echo "Skipping file $CURRENT_FILE....."
fi
((FILES++))
fi
done
echo "Encountered $FILES files"
echo "Processed $COUNT files"
echo "Skipped $SKIPPED files"
Grazie!
Questo è sorprendente. GRAZIE GRAZIE per la risposta rapida e molto dettagliata !!! :) – hpy
Questa è davvero una grande risposta. – dawg
Ecco una versione più semplice di 'split_timestamp':' split_timestamp() {local S = ($ {1 //: /}); echo $ {S [@]: 2}; } ' –