Existem ferramentas que podem aplicar uma pesquisa e substituição de regex a todo o nome do arquivo, por exemplo, perl-rename
(também chamado geralmente de prename
). Nessas ferramentas, você corresponderia vários dígitos com \d+
ou [0-9]+
dentro de um "grupo de captura" (parênteses) e faria referência a ele posteriormente com $1
ou dependendo do programa.
Por exemplo:
prename -v 's/file(\d+)$/file$1_xyz/' file[123]
prename -v 's/(file\d+)$/$1_xyz/' file[123]
(A opção -v
faz o prename imprimir as alterações. Você pode usar -n
para imprimir as alterações sem realmente renomear nada.)
Você também pode conseguir isso usando apenas mv
e sed
:
for old in file[123]; do
new=$(sed -r 's/file([0-9]+)$/file_xyz/' <<< "$old")
mv -v "$old" "$new"
done
Mas se você olhar de perto, você não precisa realmente do número. Tudo o que você está fazendo é anexar algum texto estático de qualquer maneira, assim:
prename 's/$/_xyz/' file[123]
for f in file[123]; do
mv "$f" "${f}_xyz"
done