Não vejo nenhum bom motivo para os distinguisos aleatórios aqui. Se você não tem um nome natural para distinguir os arquivos, use um contador, parece mais amigável. A solução simples é usar um contador global e sistemático.
counter=1
for f in *; do
base="$(date +%Y-%m-%d-%R:%S -r "${f}")_location_"
mv -- "$f" "$base_$counter.jpg"
counter=$((counter+1))
done
Se você quiser usar um contador somente quando houver conflitos, teste os nomes dos arquivos antes de renomear.
for f in *; do
base="$(date +%Y-%m-%d-%R:%S -r "${f}")_location_"
set -- "$base"*.jpg
if [ -e "$1" ]; then
if [ "$1" = "$base.jpg" ]; then
mv "$base.jpg" "$base_1.jpg"
fi
mv "$base.jpg" "$base_$(($#+1)).jpg"
else
mv -- "$f" "$base.jpg"
fi
done
(aviso, código não testado)