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
, mv
ou mmv
talvez? 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 -n
para que a operação continue.
rename -n 's/\.xvg$/.txt/' *.xvg
Isso basicamente significa que para todos os arquivos com .xvg
extensão no diretório atual, encontre os arquivos que terminam $
com () .xvg
e altere essa parte do nome para .txt
.
Mais detalhes e um exemplo abaixo.
Sim, o rename
comando fará isso por você. Um pequeno exemplo em que renomeio todos os meus arquivos com .html
extensão para .html_bak
, ignorando outros arquivos no diretório.
Eu poderiafortementerecomendo usar a -n
opçã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 -n
meios 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 .html
apenas 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 *.xvg
os arquivos sejam afetados.