Para proteger arquivos com 3 dígitos já
for f in "file #"*.ext; do
num=${f#file #}
num=${num%.ext}
new=$(printf "file #%03d.ext" $num)
echo mv "$f" "$new"
done
Isso exibirá no console os comandos a serem executados, mas na verdade não renomeará os arquivos.
Quando estiver satisfeito com o que pretende fazer, pode fazê-lo mudar o nome dos ficheiros removendo a palavra echo
e reexecutando-a.