#!/bin/sh -e # # exifautotran [list of files] # # Transforms Exif files so that Orientation becomes 1 transform() { local f="$1" && shift local t="$1" && shift local rc args rc="$(jpegexiforient -n "$f")" || return case "$rc" in 2) args="-flip horizontal";; 3) args="-rotate 180";; 4) args="-flip vertical";; 5) args="-transpose";; 6) args="-rotate 90";; 7) args="-transverse";; 8) args="-rotate 270";; *) args="";; esac if [ -n "$args" ]; then jpegtran -copy all $args "$f" >"$t" || return jpegexiforient -1 "$t" || return else return 1 fi } for f in "$@"; do if [ -L "$f" ]; then f=`realpath "$f"` || continue fi [ -n "${f##-*}" ] || continue t=`mktemp -- "$f.XXXXXXXX"` || continue cp -p -- "$f" "$t" && transform "$f" "$t" && mv -f -- "$t" "$f" || { rm -f -- "$t" continue } done exit 0