Você pode conseguir isso com cp -l
( --link
, arquivos de link físico em vez de copiar ):
cp -rfl folderA .
rm -rf folderA
O mv
apenas se move, ou seja, renomeia o diretório para ser seu directory
. Para mover arquivos dentro do mesmo sistema de arquivos mv
usa rename()
chamada do sistema. Se a origem e o destino estivessem em sistemas de arquivos diferentes, mv
usaria cp
e rm
para realizar a mudança, mas ainda primeiro removeria o destino, copia arquivos vinculados com disco rígido ( -R
), mas não segue o simbólico links ( -P
):
rm -f destination_path && \ cp -pRP source_file destination && \ rm -rf source_file
Embora não seja possível alterar esse comportamento de mv
, o comando cp
é mais flexível e, na verdade, você deve usá-lo. Com cp
, o -f
causa a remoção e a criação de arquivos únicos dentro do destino, em vez de remover o destino inteiro primeiro.
O cp
também é limitado, pois só pode sobrescrever ( -f
), preservador ( -n
) ou perguntar ( -i
). Se você precisar comparar os arquivos antes de decidir qual deles manter, precisará de rsync
.
Se você ainda precisar usar a chamada de sistema rename()
, mas cumprir sua meta de mesclar os diretórios conforme desejado, será necessário escrever um script que chame rename()
s individual para arquivos únicos.