#!/bin/bash function recomp { ofn="$1" if [ -f "$ofn" ] ; then nfn="${ofn/.jpg/.$$.jpg}" if [ -f "$nfn" ] ; then rm "$nfn" fi convert -verbose -quality 93 "$ofn" "$nfn" if [ -f "$nfn" ] ; then osize=$(wc -c "$ofn" | cut -f1 -d' ') nsize=$(wc -c "$nfn" | cut -f1 -d' ') let ratio="($nsize * 100) / $osize" echo "Recompress of $ofn:" >> /dev/stderr if [ $ratio -lt 33 ] ; then echo "Dubious result: $osize -> $nsize = $ratio%), check $nfn." >> /dev/stderr elif [ $ratio -lt 66 ] ; then echo "Recompress usefull ($osize -> $nsize = $ratio%)" >> /dev/stderr rm "$ofn" mv "$nfn" "$ofn" else echo "Recompress useless ($osize -> $nsize = $ratio%)" >> /dev/stderr rm "$nfn" fi else echo "Could not convert $ofn in $nfn." fi else echo "Original $ofn not found." fi } if [ "$1" = "-" -o -z "$1" ] ; then while true ; do read f if [ -z "$f" ] ; then break fi recomp "$f" done else while [ "$1" ] ; do recomp "$1" shift done fi