Dê uma olhada no comando renomear: rename .xxx .yyy *.xxx
Eu tenho um diretório cheio de arquivos que terminam em .xxx. ( Apple.xxx
, Orange.xxx
, Bannana.xxx
)
Eu quero mudar suas extensões para .yyy. ( Apple.yyy
, Orange.yyy
, Bannana.yyy
)
Qual é a maneira mais rápida de fazer isso usando comandos básicos do shell?
for i in *.xxx; do
mv "$i" "${i%.*}.yyy"
done
O sinal de porcentagem em "$ {i%. *}" significa usar o padrão glob após o sinal de porcentagem, aplicá-lo ao valor da variável i e remover o menor possível corresponder a partir do final daquele valor. Isso é chamado de expansão Parâmetro / Variável e tem muitos usos. Você também pode fazer com que a glob seja a correspondência mais longa possível ou fazer a correspondência glob desde o início também. Este artigo do Linux Journal é sobre expansão de parâmetros.
É colocado entre aspas duplas de modo que, se houver espaços no nome do arquivo e a variável IFS for definida para incluir espaços (a norma), o nome do arquivo ainda será passado para mv como um argumento.
Instale mmv e faça isso:
mmv -r "*.xxx" "#1.yyy"
Já temos várias respostas, mas adicionarei as minhas próprias.
for i in *.xxx; do
mv "$i" "'basename $i .xxx'.yyy"
done