Como posso trocar os nomes de dois arquivos na linha de comando?

6

Estou trabalhando no bash no Ubuntu 10.04 no momento, mas a solução também seria interessante em outros ambientes (por exemplo, o Windows cmd.exe). Eu normalmente renomeia o primeiro arquivo com um nome temporário, renomeio o segundo arquivo com o primeiro nome e finalmente renomeio o arquivo temporário com o segundo nome. Existe e idioma ou programa para fazer isso em um passo?

Exemplo (bash):

$ mv file1 tmp; mv file2 file1; mv tmp file2
    
por Judge Maygarden 21.02.2012 / 05:29

2 respostas

5

Eu criei o script de shell abaixo para realizar essa tarefa, mas ainda estou curioso para saber se há métodos padrão já disponíveis.

#!/bin/sh
tmp='mktemp'
mv $1 $tmp
mv $2 $1
mv $tmp $2

Eu o chamei de swap, tornei-o executável e coloquei no meu caminho. Isso permite a seguinte sintaxe.

swap file1 file2
    
por 21.02.2012 / 05:45
0

Tente:

$ mv old_file tmp_file && mv current_file old_file && mv tmp_file current_file

Como pode ser visto no link SO

Mais seguro, pois você não perderá arquivos se o mv inicial falhar.

    
por 29.05.2014 / 00:11