Eso se puede hacer en Perl en una sola línea, desde la misma línea de comandos:
Código:
perl -le 'opendir(DIR,".");while($f=readdir(DIR)){next unless ($x)=$f=~/hola(\d+)/;next if $x > 40; $x+=40;print $f;rename($f,"hola$x.txt")}'
Hay que hacer una comprobación de $x <=40 porque sino, al renombrar hola1.txt a hola41.txt lo volvería a leer en las siguientes vueltas, convirtiéndolo en hola81.txt (al menos eso hace en mi Linux).