Renomeie arquivos por regexp na linha de comando

2

Eu cometi um erro ao tentar mover arquivos de um local para outro. Agora todos os arquivos são movidos, mas há um * concatenado no final de todos os nomes.

Como faço para remover todos os * s do final dos nomes dos arquivos na linha de comando?

Observação: estou trabalhando com um sistema embarcado, não há conexão com a Internet. Por favor, forneça soluções sem necessidade de instalar coisas novas.

Obrigado antecipadamente

    
por sorush-r 13.08.2012 / 13:46

2 respostas

5

Existe um comando chamado (em excesso de originalidade) rename , que permite renomear arquivos usando expressões regulares.

Neste caso, você provavelmente quer fazer:

rename 's/\*//' files...

O que removerá o primeiro caractere * encontrado em cada nome de arquivo.

Você pode usar rename -n para listar as renomeações que serão executadas sem realmente executá-las se você estiver preocupado com o fato de o regex não estar correto.

    
por chronitis 13.08.2012 / 13:56
5

O Ubuntu vem com o comando rename que pode renomear arquivos por expressões regulares .

Se todos os seus arquivos estiverem localizados na mesma pasta, você pode simplesmente fazer o seguinte:

rename s/\*$// *

( \* é um escape * , $ é o final do nome do arquivo. Uma correspondência será substituída por nada.)

Se todos os seus arquivos estiverem em uma estrutura de diretório, você pode usar find:

find / -exec rename s/\*$// {} \;

Que executa rename /\*$// em todos os arquivos e diretórios no seu sistema. Sinta-se à vontade para alterar o / para a pasta na qual a estrutura de diretórios está localizada.

    
por Silke 13.08.2012 / 14:01