Você pode usar grupos de captura :
$ rename -n 's/(\d)a/$1.1/' *
Area.v2a.2.h -> Area.v2.1.2.h
Base.v2a.c -> Base.v2.1.c
Slider.v4a.h -> Slider.v4.1.h
Ou você pode usar um lookbehind :
$ rename -n 's/(?<=\d)a/.1/' *
Area.v2a.2.h -> Area.v2.1.2.h
Base.v2a.c -> Base.v2.1.c
Slider.v4a.h -> Slider.v4.1.h
Ou, semelhante a um lookbehind, a asserção 0-length \K
, que significa "esqueça tudo combinado até este ponto":
$ rename -n 's/\d\Ka/.1/' *
Area.v2a.2.h -> Area.v2.1.2.h
Base.v2a.c -> Base.v2.1.c
Slider.v4a.h -> Slider.v4.1.h
Observe que usei o menor \d
em vez de [0-9]
. Os dois são equivalentes, mas rename
é um script perl, portanto, entende a sintaxe das Expressões Regulares Compatíveis com Perl (PCRE).
Observe que isso só alterará a primeira ocorrência de um número seguido por um a
. Isso pode ou não ser o que você precisa, dependendo dos nomes dos arquivos.
O -n
faz com que rename
mostre o que faria sem realmente fazer nada. Depois de confirmar que funciona como esperado, remova-o para alterar os nomes dos arquivos.