Organizing photos by geolocation from the command line

Fri 21 June 2024 by R.L. Dane

Want to organize your photos by gps/geolocation, but don't feel like dealing with a slow GUI app?

That's ok, you can do it from the command line!

precision=2
for file in *.jp*g
do
    coord=$(exiftool -c "%.${precision}f" "$file" |grep GPS.Position |sed 's/^[^:]*:[[:space:]]*//')
    dir="gps/$coord"
    if mkdir -p "$dir"; then
        mv "$file" "$dir/" || echo "ERROR moving $file"
    else
        echo "ERROR creating $dir"
    fi 
done

Note that the $precision variable defines how many decimals of precision to use when sorting the photos. I found that 2 is usually good to give an approximate location, but if you have several photos right next to each other, you may wish to run it again on the conjoined set with a higher precision. The default for exiftool is 6.