HOWTO: rendezetlen fotók rendezése

Az alábbi problémára keresem a megoldást.

Adott rengeteg fotó, ami tipikusan okostelefonnal készült. Az EXIF információk alapján szeretném a fotókat mappákba rendezni, pl. dátum_hely formátumban.

Update0: köszönöm a hozzászólásokat

Update1:

  • https://github.com/andrewning/sortphotos
  • Hozzászólások

    Vázlat:

    SCRIPTEM='
    BEGIN {
    ...
    }

    ...

    END {
    ...
    }'

    cd képeim
    while read; do
    if [ -f "$REPLY" ]; then
    DIRNAME=`identify -verbose "$REPLY" | awk "$SCRIPTEM"`
    fi
    mkdir -p "$DIRNAME"
    mv "$REPLY" "$DIRNAME"
    done < <(ls -1)

    tr '[:lower:]' '[:upper:]' <<<locsemege
    LOCSEMEGE

    Jaj, kissé álmosn írtam, then helyett do-t írtam, lehagytam a fi-t... Javítva.

    tr '[:lower:]' '[:upper:]' <<<locsemege
    LOCSEMEGE

    Ez valami hasonlot csinal - az exif-ben van meg egy rakat info de en csak a datumot hasznalom...

    #!/bin/bash

    # Tool to organise photos based on EXIF data

    function DNG_JPG {
    mkdir DNG;
    mkdir JPG;
    mv *.dng DNG;

    mv *.jpg JPG;
    }

    function Do_The_Rename {
    Folder=$1;
    AbsPath=`pwd`;
    File=$2;

    Keyword=${Folder:5};

    pic_name=`echo "$File" |sed s/" "/_/g | xargs basename`
    pic_name=${pic_name%.jpg}

    if [ -z `exif -t DateTimeOriginal "$File"` >/dev/null 2>&1 ] ; then
    TargetFile="NOEXIF-$Keyword-$pic_name"
    else
    exif -t DateTimeOriginal "$File" |grep Value > exif.$$
    year=`cut -b 10-13 "exif.$$"`
    month=`cut -b 15-16 "exif.$$"`
    day=`cut -b 18-19 "exif.$$"`

    TargetFile="$year-$month-$day-$Keyword-$pic_name"
    fi

    echo $Folder $pic_name $TargetFile;
    if [ -f "$pic_name.dng" ]; then
    echo "DNG"
    mv "$pic_name.dng" "$TargetFile.dng"
    fi
    mv "$pic_name.jpg" "$TargetFile.jpg"
    }

    for i in *; do
    if [ -d $i ]; then
    cd $i;
    rename 'y/A-Z/a-z/' *.[jJ][pP][gG]
    rename 'y/A-Z/a-z/' *.[dD][nN][gG]

    for j in *.jpg; do
    Do_The_Rename $i $j;
    done;

    fi;
    cd ..;
    done

    Két bajom van vele. Néhány helyen lehagytad az idézőjeleket, így ha szóköz van a file nevében, az több paraméterre esik szét a szóközök mentén. A másik, hogy temporary file-t írsz a dátumnak, holott változóban egyszerűbb volna tárolni:

    tmp=`exif -t DateTimeOriginal "$File" | grep -F Value`
    year=`cut -c 10-13 <<<"$tmp"`

    Ja, meg nem byte-ra, hanem karakterre keresünk. Gondolj például a unicode UTF-8 implementációjára.

    tr '[:lower:]' '[:upper:]' <<<locsemege
    LOCSEMEGE

    Jogos - Javitom...
    Mondjuk en egyszeruen hasznalom - eloszor vizualisan szetvalogatom a kepeket - amolyan blockokban valami vizualis kepnezegetovel pl: 2014_Strandolas - konyvtarba aztan raengedem a scriptet. A kepek nyers pic000456.jpg|dng formatumban vannak - ahogy az SDkartyarol lejonnek, u h szerencsere a szokoz nem okozott gondot. A masik problema valsziuleg azert nem mert kerulom az ekezetes karakterek stb hasznalatat(evvan megszokas, es sok ev idegen angol, nemet gepek es rendszerek elott)...
    Koszi az eszreveteleket