Como posso renomear todos os arquivos no diretório atual com uma extensão específica para outra extensão?

Como posso renomear todos os arquivos no diretório atual com uma extensão específica para outra extensão?

Possível duplicata:
Renomeando vários arquivos (alterando extensão)

Suponha que em meu diretório atual/de trabalho eu tenha cinco arquivos:

file1.xvg
file2.xvg
file3.xvg
file1.eps
file2.eps

Existe alguma maneira de renomear todos os arquivos no diretório atual/de trabalho com a extensão.xvge dê a eles a nova extensão.TXT(Deixe o.epsarquivos sozinho)? Isso pode ser feito com rename, mvou mmvtalvez? Estou usando o Ubuntu Linux. Obrigado!

Responder1

Para sua pergunta específica, este comando funcionará. Verifique se você está satisfeito com a renomeação proposta e, em seguida, solte o -npara que a operação continue.

rename -n 's/\.xvg$/.txt/' *.xvg

Isso basicamente significa que para todos os arquivos com .xvgextensão no diretório atual, encontre os arquivos que terminam $com () .xvge altere essa parte do nome para .txt.

Mais detalhes e um exemplo abaixo.


Sim, o renamecomando fará isso por você. Um pequeno exemplo em que renomeio todos os meus arquivos com .htmlextensão para .html_bak, ignorando outros arquivos no diretório.

Eu poderiafortementerecomendo usar a -nopção de linha de comandoprimeiro(explicado abaixo) para ver quais mudanças aconteceriam antes de executar o comando real.

Com o que eu começo:

$ ls
a.html  a.txt  b.html  htmlfile

os -nmeios fazem um “teste” .. só mostram o que mudaria, não mudem nada!

$ rename -n 's/\.html$/.html_bak/' *
a.html renamed as a.html_bak
b.html renamed as b.html_bak

Ainda tenho os arquivos originais.

$ ls
a.html  a.txt  b.html  htmlfile

Agora de verdade:

$ rename  's/\.html$/.html_bak/' *

Os arquivos foram renomeados.

$ ls
a.html_bak  a.txt  b.html_bak  htmlfile

Nos exemplos acima utilizo *para especificar os arquivos a serem considerados para a operação de renomeação. Eu poderia ter restringido isso .htmlapenas a arquivos com extensão *.html.

Para mais informações consulte a página de manual renomear

Responder2

Isso pode ser feito assim:

rename 's/xvg$/txt/' *.xvg

O padrão glob garante que apenas *.xvgos arquivos sejam afetados.

informação relacionada