prev 1488106935 learn if pictures have names pic99.jpg pic100.jpg pic101.jpg, pad numbers in filenames with zeros: ext=.jpg num_width=5; for f in ./*"$ext"; do num=${f%"$ext"}; num=${num##*[![:digit:]]}; init=${f%"$num$ext"}; printf -v num %0*d "$num_width" "$((10#$num))"; mv -v -- "$f" "$init$num$ext"; done prev 1488106978 forget prev 1488106988 learn if pictures have names pic99.jpg pic100.jpg pic101.jpg, pad numbers in filenames with zeros: ext=.jpg num_width=5; for f in ./*"$ext"; do num=${f%"$ext"}; num=${num##*[![:digit:]]}; init=${f%"$num$ext"}; printf -v num '%0*d' "$num_width" "$((10#$num))"; mv -v -- "$f" "$init$num$ext"; done prev 1488107118 forget prev 1488107465 learn if pictures in some/directory/ have names pic99.jpg, pic100.jpg, pic101.jpg, pad numbers in filenames with zeros: dir='some/directory' ext=.jpg num_width=5; for f in "$dir"/*"$ext"; do [[ $f != *[[:digit:]]"$ext" ]] && continue; num=${f%"$ext"}; num=${num##*[![:digit:]]}; init=${f%"$num$ext"}; printf -v num '%0*d' "$num_width" "$((10#$num))"; mv -v -- "$f" "$init$num$ext"; done prev 1488107519 forget prev 1488107524 learn if pictures in some/directory/ have names pic99.jpg, pic100.jpg, pic101.jpg, pad numbers in filenames with zeros: dir='some/directory' ext=.jpg num_width=5; for f in "$dir"/*"$ext"; do [[ $f != *[[:digit:]]"$ext" ]] && continue; num=${f%"$ext"}; num=${num##*[![:digit:]]}; init=${f%"$num$ext"}; printf -v num '%0*d' "$num_width" "$((10#$num))"; mv -i -v -- "$f" "$init$num$ext"; done