Comando rmdir de Linux: Cómo eliminar directorios vacíos

El comando rmdir en Linux elimina directorios vacíos. Deja intactos los directorios que contienen archivos o subdirectorios, por lo que puedes eliminar directorios vacíos mientras preservas su contenido.

Eliminando directorios vacíos

Especifique la ruta del directorio a eliminar. Las rutas relativas se resuelven desde el directorio de trabajo actual, así que verifique la ubicación y el objetivo con pwd y ls -la antes de ejecutar el comando.

rmdir empty-dir

Normalmente, un directorio vacío se elimina sin salida. Si contiene archivos o subdirectorios, no se elimina y aparece un error como Directory not empty. Los mensajes de error dependen del idioma del sistema. Los directorios eliminados normalmente no se mueven a la papelera, así que confirme el objetivo primero.

Si especifica varios directorios, se intentará eliminar cada uno. Incluso si algunos fallan porque no están vacíos, otros objetivos aún pueden ser eliminados, por lo que no debe pensar en esto como una operación que o bien tiene éxito completo o se cancela por completo.

rmdir first-dir second-dir

Pruébalo tú mismo

Realiza la siguiente práctica en un lugar que no se superponga con archivos existentes. Si rmdir-practice ya existe, elige otro nombre, y si la creación del directorio falla, no ejecutes el siguiente comando. Si usas un nombre diferente, reemplaza rmdir-practice en los comandos a continuación con ese nombre.

mkdir rmdir-practice

Si la creación tiene éxito, ingresa al directorio de práctica con el siguiente comando y crea directorios que estén vacíos y directorios que contengan archivos.

cd rmdir-practice
mkdir empty busy
touch busy/example.txt

empty está vacío, y busy contiene archivos. Intenta eliminar ambos directorios en orden.

rmdir empty
rmdir busy

El primer comando elimina empty. El segundo falla porque busy no está vacío, y los archivos permanecen. Puedes usar el siguiente comando para verificar incluso los elementos ocultos.

ls -la busy

. y .. en la salida se refieren al directorio actual y al directorio padre. Si hay otros archivos o subdirectorios, no está vacío. La siguiente práctica de -p también se realiza en este directorio. Al eliminar archivos de práctica, verifica primero el objetivo.

Opción -p para eliminar hasta el directorio padre

-p o --parents intenta eliminar los directorios desde el directorio especificado hasta los directorios padre en orden. Cada directorio debe estar vacío en ese momento. Puedes verificarlo en el directorio de práctica de la siguiente manera.

mkdir -p a/b/c
rmdir -p a/b/c

Si no hay otro contenido, se eliminarán en el orden c, b, a. Si hay otros archivos en el directorio padre, eliminar los directorios inferiores podría tener éxito, pero eliminar el directorio padre podría fallar. Por lo tanto, asegúrese de que toda la ruta esté destinada para eliminación antes de ejecutar. Después de finalizar la práctica, vuelva al directorio padre con cd ...

Mostrar operaciones e ignorar directorios que no estén vacíos

-v o --verbose muestra mensajes sobre el directorio que se está procesando. Verifique los mensajes de error para determinar si la eliminación realmente ocurrió.

rmdir -v empty-dir

La opción --ignore-fail-on-non-empty de GNU rmdir ignora el fallo de eliminación cuando el directorio no está vacío. El directorio y su contenido no se eliminan. Ejecute el siguiente comando desde el directorio padre del directorio de práctica.

rmdir --ignore-fail-on-non-empty rmdir-practice/busy

Esta opción solo ignora los directorios si no están vacíos. No es una opción que ignore otros errores como rutas faltantes o falta de permisos. Si solo ocurren fallos ignorados, el estado de salida puede mostrarse como exitoso, por lo que no se debe juzgar que todos los directorios han sido eliminados únicamente basado en el estado de salida. Puede consultar el comportamiento detallado de la opción en el manual de GNU rmdir.

Verificando cuando la eliminación falla

  • No vacío: Reemplaza directory con la ruta real en ls -la directory para verificar archivos y subdirectorios ocultos. En la ls común, los elementos cuyos nombres comienzan con un punto pueden no ser visibles.
  • Problema de permisos: Verifica los permisos, la propiedad y el estado del sistema de archivos del objetivo y su directorio padre. La eliminación generalmente requiere permisos de escritura y búsqueda en el directorio padre, y también pueden aplicarse otras restricciones.
  • Problema de ruta o objetivo: Verifica el nombre y la ubicación actual. Un enlace simbólico que apunta a un directorio es diferente del directorio en sí, así que verifica con ls -ld.

rmdir * permite que el shell pase múltiples nombres en el directorio actual al comando. Los archivos también pueden ser incluidos, y los nombres ocultos generalmente no se incluyen, por lo que es más seguro primero verificar el objetivo con ls -la y especificar los directorios necesarios. Si necesitas eliminar un directorio que contiene archivos, no puedes hacerlo con rmdir, y la eliminación de archivos debe decidirse por separado después de revisar el contenido.