Não misture shell e código Perl no comando rename; É tudo sobre Perl. Use isto:
rename -n 's/cropped(\d+)/$1 + 20/e' cropped*.jpg
Remova o interruptor -n quando a saída estiver boa.
Se você insistir em usar o seu caminho sujo, não use o glob * , mas o arquivo atual e o shell moderno:
for i in {1..20}; do
test -s "cropped$i.jpg" && rename "s/cropped$i/$(($i + 20))/" "cropped$i.jpg"
done
Eu removi expr , está desatualizado .
Existemoutrasferramentascomomesmonomequepodemounãosercapazesdefazerissoentãotenhacuidado.
Sevocêexecutaroseguintecomando
$file"$(readlink -f "$(type -p rename)")"
e você tem um resultado que contém Perl script, ASCII text executable e não contém ELF , então esta parece ser a ferramenta certa =)
Se não, para torná-lo o padrão (geralmente já é o caso):
$ sudo update-alternatives --set rename /path/to/rename
Substitua /path/to/rename pelo caminho do seu executável Perl rename .
Se você não tiver esse comando, pesquise seu gerenciador de pacotes para instalá-lo ou faça isso manualmente (não há deps ...)