Cómo renombrar directorios en Linux

Actualizado 

2 min de lectura

Cómo renombrar directorios en Linux

Renombrar directorios es una de las operaciones más básicas que a menudo hay que realizar en un sistema Linux. Puedes renombrar directorios desde el gestor de archivos de la interfaz gráfica de usuario con un par de clics o utilizando el terminal de línea de comandos.

Este artículo explica cómo renombrar directorios utilizando la línea de comandos.

Cambiar el nombre de los directorios

En Linux y los sistemas operativos tipo Unix, puedes utilizar el comando mv (abreviatura de move) para renombrar o mover archivos y directorios de una ubicación a otra.

La sintaxis del comando mv para mover directorios es la siguiente:

mv [OPTIONS] origen destino

Por ejemplo, para renombrar el directorio dir1 como dir2 se ejecutaría

mv dir1 dir2

Al renombrar directorios, debes especificar exactamente dos argumentos al comando mv. El primer argumento es el nombre actual del directorio, y el segundo es el nuevo nombre.

📝 Nota: Es importante tener en cuenta que si dir2 ya existe, dir1 se mueve al directorio dir2.

Para renombrar un directorio que no se encuentra en el directorio de trabajo actual, es necesario especificar la ruta absoluta o relativa:

mv /home/user/dir1 /home/user/dir2

Cambiar el nombre de varios directorios

El comando mv sólo puede renombrar un archivo a la vez. Sin embargo, puede utilizarse junto con otros comandos como find o dentro de bucles para renombrar varios archivos a la vez.

Este es un ejemplo que muestra cómo utilizar el bucle for de Bash para añadir la fecha actual a los nombres de todos los directorios en el directorio de trabajo actual:

for d in *; do
  if [ -d "$d" ]; then
    mv -- "$d" "${d}_$(date +%Y%m%d)"
  fi
done

Analicemos el código línea por línea:

Analicemos el código línea por línea:

  • La primera línea crea un bucle e itera a través de una lista de todos los archivos.
  • La segunda línea comprueba si el archivo es un directorio.
  • La tercera línea añade la fecha actual a cada directorio.

A continuación hay una solución ti la misma tarea usando mv en combinación con find:

find . -mindepth 1 -prune -type d -exec sh -c 'd="{}"; mv -- "$d" "${d}_$(date +%Y%m%d)"' \;

El comando find está pasando todos los directorios a mv uno por uno usando la opción -exec. La cadena es el nombre del directorio que se está procesando.

Como puede ver en los ejemplos, renombrar múltiples directorios con mv no es una tarea fácil ya que requiere un buen conocimiento de los scripts de Bash.

Renombrar varios directorios con rename

El comando rename se utiliza para renombrar múltiples archivos y directorios. Este comando es más avanzado que mv ya que requiere un conocimiento básico de las expresiones regulares.

Hay dos versiones del comando rename con diferente sintaxis. Usaremos la versión Perl del comando rename. Los archivos son renombrados de acuerdo a la expresión regular perl.

El siguiente ejemplo muestra cómo sustituir los espacios en los nombres de todos los directorios del directorio de trabajo actual por guiones bajos:

find . -mindepth 1 -prune -type d | rename 'y/ /_/'

Para estar seguro, pase la opción -n a rename para imprimir los nombres de los directorios a renombrar sin renombrarlos.

Aquí hay otro ejemplo que muestra cómo convertir los nombres de los directorios a minúsculas:

find . -mindepth 1 -prune -type d | rename 'y/A-Z/a-z/'