Linux / Cómo Renombrar un Archivo o Directorio

Para renombrar un archivo o directorio en Linux, especifica la ruta existente y la nueva ruta en orden con el comando mv. Si el nombre de destino ya existe, puede ser sobrescrito, o la fuente puede ser movida a una ubicación inesperada, por lo que debe verificarse antes de la ejecución.

Formato básico para renombrar

El mv usado en la guía para mover archivos con mv también se utiliza para renombrar. Si las dos rutas están en el mismo directorio, solo cambia el nombre, y si están en diferentes directorios, también cambia la ubicación.

mv -i -- source destination

-i verifica antes de sobrescribir un archivo de destino existente. -- indica el final de las opciones, por lo que los nombres que comienzan con un guion no se interpretan como opciones. Los ejemplos a continuación se basan en GNU coreutils mv y en el shell Bash.

Preparando archivos y directorios para la práctica

Practique en un directorio temporal para no tocar los datos existentes. Ejecute los comandos a continuación en orden en la misma terminal. La ruta del directorio temporal recién creado se almacenará en la variable workdir.

workdir=$(mktemp -d)
printf 'example\n' > "$workdir/report.txt"
mkdir "$workdir/docs"
ls -l -- "$workdir"

Si report.txt y docs aparecen en la salida, está listo. Para verificar la ruta, ejecute printf '%s\n' "$workdir". Dado que los comandos usan variables de la terminal actual, si abre una nueva terminal, necesitará prepararse nuevamente.

Renombrando archivos

Renombre el archivo de práctica de report.txt a summary.txt y verifique los resultados. Asegúrese de que el nuevo destino no exista ya antes de ejecutar.

ls -la -- "$workdir"
mv -i -- "$workdir/report.txt" "$workdir/summary.txt"
ls -l -- "$workdir"
cat -- "$workdir/summary.txt"

Si tiene éxito, la lista mostrará summary.txt en lugar de report.txt, y el último comando dará como resultado example. Al renombrar dentro del mismo sistema de archivos, el contenido permanece igual. Para volver al nombre original, asegúrese de que el nombre original no esté en uso, luego intercambie las dos rutas y ejecute mv -i.

Renombrando directorios

Los directorios se renombran de la misma manera. El siguiente comando renombra docs a archive en un entorno de práctica donde el destino no existe.

mv -i -T -- "$workdir/docs" "$workdir/archive"
ls -l -- "$workdir"

Si tiene éxito, se mostrará archive en lugar de docs. -T es una opción en GNU mv que no trata de manera especial la última ruta como el directorio de destino. Sin esta opción, si especifica un directorio ya existente como destino, el elemento de origen puede trasladarse dentro de ese directorio en vez de cambiar de nombre. Incluso si usa -T, pueden ocurrir reemplazos o errores dependiendo del tipo y estado del destino existente, así que verifique primero. Los directorios de destino no vacíos no pueden ser reemplazados.

Verificando sobrescritura y ruta

Si especifica un archivo existente como destino, el archivo puede ser sobrescrito. Haga una copia de seguridad de los archivos importantes primero y responda y solo al sobrescribir en respuesta a la pregunta de confirmación de -i. Para evitar sobrescribir, ingrese n. El texto de confirmación puede variar según el sistema y la configuración de idioma.

Si el nombre del archivo contiene espacios, rodee toda la ruta con comillas dobles. El siguiente es un ejemplo de cómo crear un archivo de práctica separado y luego renombrarlo.

printf 'notes\n' > "$workdir/old notes.txt"
mv -i -- "$workdir/old notes.txt" "$workdir/new notes.txt"
cat -- "$workdir/new notes.txt"

Si notes se muestra al final, el archivo se ha leído bajo un nuevo nombre. En el trabajo real, si la ruta se especifica incorrectamente o no hay permiso, verifique el mensaje de error y los permisos de escritura de los directorios de origen y destino. Al mover a otro sistema de archivos, puede ocurrir una copia seguida de la eliminación del original, por lo que necesita verificar el espacio y el resultado. Para más detalles sobre las opciones y el comportamiento, consulte el manual de mv de GNU coreutils .