Como renomear um diretório pela linha de comando?


Respostas:


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


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

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?


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

4

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

gvfs-move /home/user/oldname /home/user/newname

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.