Como forçar a substituição de diretórios não vazios usando o `mv`


17

Estou querendo mover (não apenas copiar) um grupo de arquivos / diretórios para um diretório diferente, alguns dos quais têm conflitos de nome com arquivos / diretórios no diretório de destino. Meu principal objetivo é mover os arquivos, para que eu possa tolerar que o diretório não vazio seja substituído.

No momento, estou usando mv ... destinationno entanto, ocasionalmente, recebo

mv: não é possível mover o `target 'para / destination / target': o diretório não está vazio

Tentei mv -f ... destinationsem sucesso e, como quero que os arquivos saiam do local original, rsyncnão parece apropriado.

Como bônus, existe uma boa solução para preservar os arquivos que devem ser sobrescritos de alguma forma, talvez renomeando?


E que erro você obtém ao tentar seu comando mv?
precisa saber é o seguinte

Você diz explicitamente que rsyncnão é isso que deseja; por que você marcou isso rsync?
DopeGhoti

@DopeGhoti Eu disse que não parece apropriado, mas estou disposto a mostrar o contrário.
user1227038

@suspectus Pergunta atualizada.
user1227038

11
se você usar uso mv --backup=numberedou uma das outras opções para o --backupswitch, em seguida, mvirá completar a fusão e preservar os arquivos destinado a ser substituído
BSD

Respostas:


19

Se você usar mv --backup=numbered
(ou uma das outras opções para o --backupswitch),
em seguida, mvirá completar a fusão e preservar os arquivos a intenção de ser substituído.


resposta mudo - o que irá poluir a sua unidade com .~1~pastas
Toolkit

0
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
SRC=/path/to/source
DST=/path/to/destination

for item in $SRC/*; do
    if [[ -f "$DST/$(basename "$item")" ]]; then
        newitem=$(basename $item)_old
        while [[ -f "$DST/$newitem" ]]; do
            newitem=${newitem}_old
        done
        mv "$DST/$(basename $item)" "$DST/$newitem"
    fi
    mv "$item" "$DST/$(basename $item)"
done

11
Em vez deste script, pode-se executar diretamente o cpseguido pelo mvcomando.
Rez.safiyat 5/10/2015

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.