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.