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.