Como parar de renomear um arquivo que já foi renomeado usando loop no shell script

-1

Eu tenho um nome de diretório dir1 contendo outros diretórios chamados 1,2,3,4,5. Agora quero renomear o diretório 1 com 4, 2 = > 5, 3 = > 6, 4 = > 5. mas meu problema é usar o comando mv no script de shell renomeado com sucesso o diretório 1,2,3 mas no caso de 4 que é renomeado o diretório de 1 é substituído por 5. Como faço para renomear esses arquivos em loop para que anteriormente renomeado arquivo não muda.

    
por Braham Shakti 11.04.2015 / 14:22

1 resposta

2

O que você está fazendo aqui é meio peculiar. Os nomes resultantes seriam:

5 (was: 1)
6 (was: 3)

A primeira operação (mv 1 4) teria removido o diretório "4" original e substituído por um. Existem algumas maneiras de contornar isso, e duas que eu posso pensar em cima da minha cabeça seriam:

  • Renomeando todos os diretórios para algo com um sufixo (por exemplo, .old) e renomeando cada um desses diretórios para os nomes desejados, ou
  • Simplesmente fazendo a última operação (mv 4 5) antes da primeira.

Para a primeira opção, você pode fazer assim:

for file in 1 2 3 4; do mv $file $file.old; done
mv 1.old 4
mv 2.old 5 # actually rather redundant since it would be overwritten anyway
mv 3.old 6
mv 4.old 5
    
por zhongfu 11.04.2015 / 14:28