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 ...)