Como renomear um arquivo substituindo letras específicas no arquivo no linux

3

Eu usei um script que renomeou meu arquivo, por exemplo, 'echo webutil.olb | tr [A-Z] [a-z] ' Eu queria renomeá-lo de volta para webutil.olb . Como faço isso para muitos outros arquivos que eu tenho

    
por Emmanuel 11.05.2010 / 11:46

3 respostas

2

O Debian rename permite que você especifique um padrão de substituição de sed para aplicar em nomes de arquivos para renomeá-los.

    
por 11.05.2010 / 11:48
1

Supondo que os arquivos foram renomeados com as strings extras, isso provavelmente ajudaria:

for file in echo*
do
    new="${file#* }"    # strip up to the first space (remove "echo ")
    new="${new% |*}"    # strip the space-pipe and after (remove " | tr ...")
    mv "$file" "$new"
done

Isso renomeará, por exemplo, um arquivo chamado literalmente "echo webutil.olb | tr [A-Z] [a-z]" para ser nomeado "webutil.olb" e funcionará para outros arquivos de nome similar. Ele espera que os nomes desejados estejam entre um espaço e um espaço seguidos por um pipe.

    
por 11.05.2010 / 14:41
0

Para o seu exemplo, tr deixou o webutil.olb como estava.

Em geral, você não pode fazer isso, pois perde as informações sobre o caso. Por exemplo, o nome do arquivo "webutil.olb" pode vir da aplicação de tr para "WebUtil.olb" ou "WEBUTIL.olb".

    
por 11.05.2010 / 14:34

Tags