Kép EXIF adataiból fájlátnevezés


By Proci - Posted on 11 július 2009

Kellemetlen amikor sok képet kezelve ilyeneket látunk a mappákban: DSCF292XX.jpg. Jó volna tudni mikor készültek. Nem beszélve arról, ha rendszerezni is szeretnénk. Ezt megelégelve írtam egy scriptet, mely kiolvassa az exif adatokat és átnevezi ÉvHónapNapSorszám.jpg formában.

Az év első két számjegye leszedve, így is elég hosszú:)
A sorszám pedig az adott napon készült képek számát adja. 999-ig van felkészítve. Így pl. 070728016.jpg = 2007.07.28. napján készült 16. kép.

A galáriában lévő képek nagyrésze már így került fel. Nem kell a fájlban turkálni exif adatok után. Elég csak rápillantani a fájlnévre és máris tudni mikor készült.

kepexif.sh

#!/bin/bash

I=0
naptart=0
kepekszama=0
chmod 644 ./*

for FILE in `ls -1 *.jpg` ;do
    evcheck=$(exiv2 $FILE | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $1'} | sed 's/0/ /g' | awk {'print $1'})

    ev=$(exiv2 $FILE  | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $1'} | sed 's/20//g')
    honap=$(exiv2 $FILE  | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $2'})
    nap=$(exiv2 $FILE  | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $3'})

    IDO=$ev$honap$nap

# 2xxx ev ellenorzese
        if ! [ "$evcheck" = "2" ]; then
            echo "!!! HIBÁS EXIF DÁTUM: $FILE !!!"
        fi

# szamlalo
        if [ "$naptart" = "$nap" ]; then

            let I=I+1
            SZAM=$(printf %03d $I)
        else
            I=0
            SZAM=$(printf %03d $I)
        fi

# atnevezo
        if ! [ "$IDO" = "0" ]; then
            let kepekszama=kepekszama+1
            mv ./$FILE ./$IDO$SZAM.jpg
            echo $kepekszama. $FILE - $IDO$SZAM.jpg

            naptart=$nap
        fi

done



for FILE in `ls -1 *.JPG` ;do



    evcheck=$(exiv2 $FILE | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $1'} | sed 's/0/ /g' | awk {'print $1'})

    ev=$(exiv2 $FILE  | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $1'} | sed 's/20//g')
    honap=$(exiv2 $FILE  | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $2'})
    nap=$(exiv2 $FILE  | grep timestamp | awk {'print $4'} \
 | sed 's/:/ /g' | awk {'print $3'})

    IDO=$ev$honap$nap

# 2xxx ev ellenorzese
        if ! [ "$evcheck" = "2" ]; then
            echo "!!! HIBÁS EXIF DÁTUM: $FILE !!!"
        fi

# szamlalo
        if [ "$naptart" = "$nap" ]; then

            let I=I+1
            SZAM=$(printf %03d $I)
        else
            I=0
            SZAM=$(printf %03d $I)
        fi

# atnevezes
        if ! [ "$IDO" = "0" ]; then
            let kepekszama=kepekszama+1
            mv ./$FILE ./$IDO$SZAM.jpg
            echo $kepekszama. $FILE - $IDO$SZAM.jpg

            naptart=$nap
        fi



done
Címkék