Для большинства ваших шагов вам не хватает лидирующих нулей, поэтому они не будут правильно сортироваться. Например:
for i in $(seq 1 20); do
echo "step$i.png"
done | sort
выход
step10.png
step11.png
step12.png
step13.png
step14.png
step15.png
step16.png
step17.png
step18.png
step19.png
step1.png
step20.png
step2.png
step3.png
step4.png
step5.png
step6.png
step7.png
step8.png
step9.png
Обратите внимание на неправильный порядок. И наоборот, ведущие нули решают проблему. Предшествующие нули, подобные этому
for i in $(seq 1 20); do
printf "step%02d.png\n" $i
done | sort
, дают последовательность
step01.png
step02.png
step03.png
step04.png
step05.png
step06.png
step07.png
step08.png
step09.png
step10.png
step11.png
step12.png
step13.png
step14.png
step15.png
step16.png
step17.png
step18.png
step19.png
step20.png
Как вы, вероятно, хотите. Итак, я рекомендую добавить начальные нули в имена файлов.
Простой способ переименовать файл будет:
for num in $(seq 0 19999); do
fnum=$(printf "%05d" $num)
mv "step${num}.png" "step${fnum}.png"
done