Usando rename
Uma ferramenta geralmente útil para este tipo de atividade é rename
do pacote perl
. Aplica uma substituição por perl ao nome do arquivo:
rename 's/file/file0/' file[0-9][0-9].ext
Como isso funciona:
-
s/file/file0/
Este é um comando
perl
de substituição. Ele substitui a ocorrência defile
em um nome de arquivo porfile0
. -
file[0-9][0-9].ext
Esta é a lista de arquivos em que
rename
deve operar.[0-9]
significa qualquer número de 0 a 9.[0-9][0-9]
significa quaisquer dois números, um após o outro.
A página manpage de rename
é aqui .
Observação: isso requer a versão perl
de rename
. Há também um rename
utility que faz parte de util-linux
, mas funciona diferentemente.
Usando bash
Essa abordagem usa um loop for
combinado com a substituição do padrão :
for f in file[0-9][0-9].ext; do mv "$f" "${f/file/file0}"; done
Como funciona:
-
for f in file[0-9][0-9].ext; do
Isso inicia um loop sobre cada nome de arquivo que corresponde ao glob
file[0-9][0-9].ext
. -
mv "$f" "${f/file/file0}"
Isso renomeia os arquivos usando a substituição de padrões do bash . Ele substitui
file
por file0 'no nome do arquivo. -
done
Isso marca o final do loop
for
.
Essa abordagem requer bash
(ou outro shell avançado).
bash
é o shell interativo padrão e essa abordagem funcionará em bash
. Assim, isso deve funcionar na linha de comando usual.