¿Cómo cambio el nombre de un directorio a través de la línea de comando?


Respuestas:


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


Artículo genial Ese es exactamente el punto.
Rafał Cieślak

77
Esto no funcionará si el nuevo nombre ya es un directorio existente. En cambio, moverá el directorio antiguo dentro del nuevo.
cxrodgers

99
Si el nombre del directorio es el mismo con mayúsculas, obtendrá No such file or directory. Para evitar esto haz algo como mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF

99
@cxrodgers: pass --no-target-directory( -T) , para evitar newnameser tratado como un directorio de destino.
jfs

123

mv puede hacer dos trabajos

  1. Puede mover archivos o directorios
  2. Puede renombrar archivos o directorios

Para cambiar el nombre de un archivo o directorio, escriba esto en Terminal:

mv old_name new_name 

con espacio entre los viejos y nuevos nombres.

Para mover un archivo o directorio escriba esto en Terminal.

mv file_name ~/Desktop 

moverá el archivo al escritorio.

Si es un directorio que debe agregar -Rantes del nombre del directorio:

mv -R directory_name ~/Desktop

3
mven Ubuntu es de GNU coreutils. AFAICT no tiene una -Ropción, ni es necesario al mover un directorio.
arielf

-r ni siquiera funciona
user1735921

La opción correcta es -T. Vea la respuesta de @ bmaupin para su comportamiento.
cronométrico

39
mv -T /home/user/oldname /home/user/newname

Eso cambiará el nombre del directorio si el destino no existe o si existe pero está vacío. De lo contrario, le dará un error.

Si haces esto en su lugar:

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

Sucederá una de dos cosas:

  • Si /home/user/newnameno existe, cambiará el nombre /home/user/oldnamea/home/user/newname
  • Si /home/user/newnameexiste, se moverá /home/user/oldnamea /home/user/newname, es decir/home/user/newname/oldname

Fuente: ¿Cómo decidir que mv se mueve a un directorio en lugar de reemplazar el directorio?


No funciona si desea poner en mayúscula el nombre del directorio en un sistema de archivos que no distingue entre mayúsculas y minúsculas (probablemente en MacOS). mv -T $PWD/analisys $PWD/Analisysvuelve mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. Trabajé alrededor de esto usando un nombre intermedio (es decir analisys_).
basilikode

El comando puede no haber sido exitoso debido a las limitaciones del sistema de archivos, pero desde otra perspectiva fue exitoso al interpretar sus intenciones (renombrar un directorio, no moverlo) :)
bmaupin

intentaste esto?
Mahmoud S. Marwad

5

Si desea cambiar el nombre de un directorio a su nivel en el sistema de archivos (por ejemplo, está en su directorio de inicio y desea cambiar el nombre de un directorio que también está en su directorio de inicio):

mv Directory ./NewNameDirectory

4

Este gvfs-movecomando también cambiará el nombre de los archivos y directorios.

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

3

gvfs-rename también cambiará el nombre de los directorios. Dará un error si ya existe un directorio con el nuevo nombre. La única limitación es que no puede usar una ruta con el nombre de la carpeta. Entonces

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

no funcionará, pero

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

trabajará. No es tan útil como mv -T pero leí en el hombre que estaba destinado a operaciones de red.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.