Me gusta esa respuesta de una línea, pero se rompe porque analiza el nombre del archivo. También lo mejoré un poco con hash sha.
find -iname "*.jpg" -exec sha1sum '{}' ';' | while read sum file ; do mv -v "$file" "`dirname '$file'`/$sum".jpg ; done
Creo que también saca los archivos y los pone en la base de donde se ingresó el comando.
Gracias.