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

2

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

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

Existe alguma maneira que eu possa renomear todos os arquivos no diretório atual / de trabalho com a extensão .xvg e dar-lhes a nova extensão .txt (deixando o < arquivos strongs> .eps sozinhos)? Isso pode ser feito com rename , mv ou mmv , talvez? Eu estou usando o Ubuntu Linux. Obrigado!

    
por Andrew 30.06.2012 / 23:52

2 respostas

9

Para sua pergunta em particular, este comando funcionará. Verifique se você está satisfeito com a renomeação proposta e, em seguida, descarte o -n para que a operação continue.

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

Isso basicamente significa que para todos os arquivos com a extensão .xvg no diretório atual, localize os arquivos que terminam ( $ ) com .xvg e altere essa parte do nome para .txt .

Mais detalhes e um exemplo abaixo.

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

Eu strongmente recomendo usar a opção de linha de comando -n primeiro (explicado abaixo) para ver quais mudanças aconteceriam antes de executar a comando real.

O que eu começo com:

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

o -n significa um "teste experimental" .. apenas mostre o que mudaria, não mude nada!

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

Ainda tem os arquivos originais.

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

Agora para valer:

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

Os arquivos foram renomeados.

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

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

Para mais informações, consulte a man page rename

    
por 01.07.2012 / 00:05
3

Isso pode ser feito assim:

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

O padrão glob garante que somente arquivos *.xvg sejam afetados.

    
por 01.07.2012 / 02:41