Se você tiver a implementação rename
com regexes Perl (como em Debian / Ubuntu /…, ou prename
no Arch Linux), você precisará de $1
em vez de . Além disso, não há barras invertidas na captura de parênteses:
rename 's/(.*)_(.*)/$2_$1/' *_*
Se não, você precisa implementá-lo você mesmo.
#! /bin/bash
for file in *_* ; do
left=${file%_*}
right=${file##*_}
mv "$file" "$right"_"$left"
done
Nota: Conforme escrito, ambos os comandos renomear a_b_c
para c_a_b
. Para obter b_c_a
, altere o primeiro grupo de captura para .*?
no primeiro caso ou %
para %%
e ##
para #
no segundo.