Como renomear um diretório pela linha de comando?

564

Eu tenho o diretório /home/user/oldnamee quero renomeá-lo para /home/user/newname. Como posso fazer isso em um terminal?

NN
fonte
Veja também: Como mover um diretório
kenorb
Use sempre mvou rename.
John Strood

Respostas:

737
mv /home/user/oldname /home/user/newname
Rafał Cieślak
fonte
Artigo legal. Esse é exatamente o ponto.
Rafał Cieślak
77
Isso não funcionará se o novo nome já for um diretório existente. Em vez disso, ele moverá o diretório antigo para o novo.
Cxrodgers
9
Se o nome do diretório for o mesmo com letras maiúsculas, você receberá No such file or directory. Para evitar isso, faça algo parecido mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF
9
@cxrodgers: pass --no-target-directory( -T) , para evitar o tratamento newnamecomo um diretório de destino.
jfs
123

mv pode fazer dois trabalhos.

  1. Pode mover arquivos ou diretórios
  2. Pode renomear arquivos ou diretórios

Para renomear apenas um arquivo ou diretório, digite-o no Terminal:

mv old_name new_name 

com espaço entre os nomes antigos e novos.

Para mover um arquivo ou diretório, digite-o no Terminal.

mv file_name ~/Desktop 

ele moverá o arquivo para a área de trabalho.

Se for um diretório, você deve adicionar -Rantes do nome do diretório:

mv -R directory_name ~/Desktop
shadi
fonte
3
mvno Ubuntu é do GNU coreutils. AFAICT não tem uma -Ropção, nem é necessário ao mover um diretório.
arielf 9/09/2015
-r nem funciona
user1735921 26/09
A opção correta é -T. Veja a resposta de @ bmaupin para saber seu comportamento.
chronometric
39
mv -T /home/user/oldname /home/user/newname

Isso renomeará o diretório se o destino não existir ou se existir, mas estiver vazio. Caso contrário, ocorrerá um erro.

Se você fizer isso:

mv /home/user/oldname /home/user/newname

Uma de duas coisas acontecerá:

  • Se /home/user/newnamenão existir, ele será renomeado /home/user/oldnamepara/home/user/newname
  • Se /home/user/newnameexistir, passará /home/user/oldnamepara /home/user/newname, ou seja,/home/user/newname/oldname

Fonte: Como decidir que o mv se move para um diretório em vez de substituí-lo?

bmaupin
fonte
Não funciona se você deseja capitalizar o nome do diretório em um sistema de arquivos que não diferencia maiúsculas de minúsculas (provavelmente no MacOS). mv -T $PWD/analisys $PWD/Analisysretorna mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. Eu trabalhei em torno disso usando um nome intermediário (ie analisys_).
basilikode
O comando pode não ter sido bem-sucedido devido às limitações do sistema de arquivos, mas de outra perspectiva, ele foi bem-sucedido ao interpretar suas intenções (renomear um diretório, não movê-lo) :)
bmaupin
você tentou isso?
Mahmoud S. Marwad
5

Se você deseja renomear um diretório no seu nível no sistema de arquivos (por exemplo, você está no seu diretório inicial e deseja renomear um diretório que também esteja no seu diretório inicial):

mv Directory ./NewNameDirectory
Matt P
fonte
4

Este gvfs-movecomando também renomeará arquivos e diretórios.

gvfs-move /home/user/oldname /home/user/newname
Avinash Raj
fonte
3

O gvfs-rename também renomeará diretórios. Irá ocorrer um erro se já existir um diretório com o novo nome. A única limitação é que você não pode usar um caminho com o nome da pasta. assim

gvfs-rename /home/boo /home/boo-the-dog 

não vai funcionar, mas

cd /home 
gvfs-rename boo boo-the-dog 

vai funcionar. Não é tão útil quanto o mv -T, mas li no homem que era para operações de rede.

thebunnyrules
fonte