Se você usa mv --backup=numbered
(ou uma das outras opções para a opção --backup
),
então mv
completará a mesclagem e preservará os arquivos que serão sobrescritos.
Eu estou querendo mover (não apenas copiar) um grupo de arquivos / diretórios para um diretório diferente, alguns dos quais possuem conflitos de nome com arquivos / diretórios no diretório de destino. Meu objetivo principal é mover os arquivos, para que eu possa tolerar que o diretório não vazio seja sobrescrito.
No momento, estou usando mv ... destination
, mas ocasionalmente recebo
mv: cannot move 'target' to /destination/target': Directory not empty
Eu tentei mv -f ... destination
sem sucesso e, como quero que os arquivos saiam do local original, rsync
não parece ser apropriado.
Como bônus, existe uma boa solução para preservar os arquivos que podem ser sobrescritos de alguma forma, talvez renomeando?
#!/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