mv a b tenta mover a para b se b for um diretório ou um link simbólico para um diretório. Caso contrário, ele renomeará (ou copiará e excluirá em sistemas de arquivos diferentes) a to b .
Para obter um resultado consistente para mover um arquivo para um diretório, você pode fazer:
mv file dir/
ou
mv file dir/.
Se dir não existir, você receberá um erro e ele não renomeará file para dir .
Se, por outro lado, você quiser fazer um rename sem ter que se preocupar se o arquivo de destino existe como um diretório ou não, com o GNU mv, você pode fazer:
mv -T file dest
Nesse caso, file não será movido para dest se dest for um diretório. No entanto, se file e dest forem diretórios e dest estiver vazio, file será renomeado para dest (e o original dest será removido). Se ambos forem diretórios e dest não for vazio, mv -T irá reclamar.
Mesmo, se file e dest forem não diretórios (e isso inclui links simbólicos incluindo links simbólicos para diretórios), file será renomeado para dest (embora você obtenha um prompt se você não tiver permissão de gravação para dest ), e o% originaldest será removido. Há uma diferença com mv file dest no caso em que dest é um link simbólico para um diretório. Com -T , file é renomeado para dest , mas sem -T , file é movido para o diretório apontado por dest .
Então, para resumir, depois de mv -T file dest , file será renomeado para dest ou você receberá uma mensagem de erro (ou um prompt). Se o comando tiver sido bem-sucedido, o original dest , se existir antes, será removido.