Se você estiver usando o GNU mv
, você tem a seguinte opção.
$ mv -b source/* dest/.
Essa opção informa ao mv
para enviar todos os arquivos que colidem no diretório dest/.
para uma versão de backup, geralmente adicionando um til ( ~
) ao final do arquivo, antes de mover os arquivos para o diretório .
Exemplo
Digamos que eu tenha os seguintes diretórios de amostra com arquivos.
$ mkdir source dest
$ touch source/file{1..3} dest/file{1..5}
$ tree
.
├── dest
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
└── source
├── file1
├── file2
└── file3
Agora, quando movemos arquivos de source
para dest
:
$ mv -b source/* dest/.
$ tree
.
├── dest
│ ├── file1
│ ├── file1~
│ ├── file2
│ ├── file2~
│ ├── file3
│ ├── file3~
│ ├── file4
│ └── file5
└── source
2 directories, 8 files
Controlando a extensão
Mais uma vez com a versão GNU de mv
, você pode alterar o comportamento padrão usando a opção -S <string>
.
$ mv -b -S "string" source/* dest/.
Exemplo
$ mv -b -S .old source/* dest/.
$ tree
.
├── dest
│ ├── file1
│ ├── file1.old
│ ├── file2
│ ├── file2.old
│ ├── file3
│ ├── file3.old
│ ├── file4
│ └── file5
└── source
2 directories, 8 files