Cómo eliminar un directorio en Linux

27 feb 2021 3 min di lettura
Cómo eliminar un directorio en Linux
Indice dei contenuti

Introducción

Hay varias formas de eliminar directorios (carpetas, rutas) y archivos en los sistemas Linux. Si usa un administrador de archivos de escritorio como Gnome Files o Dolphin de KDE, puede eliminar archivos y directorios usando la interfaz gráfica de usuario del administrador. Pero si está trabajando en un servidor o desea eliminar varios directorios a la vez, la mejor opción es eliminar directorios (rutas) de la línea de comandos. En este artículo, explicaremos cómo eliminar directorios en Linux usando los comandos rmdir, rm y find.

Antes de comenzar Cuando elimina un directorio con el administrador de archivos del escritorio, el directorio se mueve a la Papelera y se puede restaurar fácilmente. Al eliminar archivos o directorios de la línea de comandos , no se puede restaurar por completo. En la mayoría de los sistemas de archivos de Linux, eliminar un directorio requiere permiso de escritura en el directorio y su contenido. De lo contrario, se mostrará el error "Operación no permitida".

Cómo eliminar carpetas con rmdir

rmdir es una utilidad de línea de comandos para eliminar directorios vacíos. Es útil cuando desea eliminar un directorio solo si está vacío. Para eliminar un directorio con rmdir, escriba el comando seguido del nombre del directorio que desea eliminar. Por ejemplo, para eliminar un directorio llamado dir1:

rmdir dir1

Si el directorio no está vacío, se mostrará el siguiente error:

rmdir: failed to remove 'dir1': Directory not empty

En este caso, deberá utilizar el comando rm o eliminar manualmente el contenido del directorio antes de poder eliminarlo.

Cómo eliminar carpetas con rm

rm es una utilidad de línea de comandos para eliminar archivos y directorios. A diferencia de rmdir, el comando rm puede eliminar directorios vacíos y no vacíos. De forma predeterminada, rm no elimina directorios cuando se usa sin opciones. Para eliminar un directorio vacío, use la opción -d (--dir) y para eliminar un directorio no vacío y todo su contenido use la opción -r (--recursive o -R). Por ejemplo, para eliminar un directorio llamado dir1 junto con todo su contenido, escriba:

rm -r dir1

Si un directorio o archivo dentro del directorio está protegido contra escritura, se le pedirá que confirme la eliminación. Para eliminar un directorio sin que se le solicite, agregue el comando y use la opción -f:

rm -rf dir1

Para eliminar varios directorios a la vez, use el comando rm seguido de los nombres de los directorios separados por espacios. El siguiente comando eliminará cada directorio listado y su contenido:

rm -r dir1 dir2 dir3

La opción -i le dice a rm que le pida que confirme la eliminación de cada subdirectorio y archivo. Si el directorio contiene muchos archivos, puede considerar usar la opción -I, que le preguntará solo una vez antes de continuar con la eliminación.

rm -rI dir1

Para eliminar el directorio, escriba y y presione Entrar.

rm: remove 1 argument recursively? y

También puede utilizar expansiones regulares para hacer coincidir y eliminar varios directorios. Por ejemplo, para eliminar todos los directorios de nivel superior en el directorio actual que terminan con _bk, use el siguiente comando:

rm -r * _bk

Usar expansiones regulares al eliminar directorios puede ser arriesgado. Se recomienda que primero enumere los directorios con el comando ls para que pueda ver qué directorios se eliminarán antes de ejecutar el comando rm.

Cómo eliminar carpetas con buscar

find es una utilidad de línea de comandos que le permite buscar archivos y directorios basados en una expresión dada y realizar una acción en cada archivo o directorio correspondiente. El escenario más común es utilizar el comando de búsqueda para eliminar directorios según un patrón. Por ejemplo, para eliminar todos los directorios que terminan con _cache en el directorio de trabajo actual, ejecutaría:

find. -type d -name '*_cache' -exec rm -r {} +

Analicemos el comando anterior:

  • . - buscar de forma recursiva el directorio de trabajo actual (.).
  • -tipo d: limita la búsqueda a directorios.
  • -name '* _cache': busca solo directorios que terminen con _cache.
  • -exec: ejecuta un comando externo con argumentos opcionales, en este caso es rm -r.
  • {} +: agrega los archivos encontrados al final del comando rm.

Cómo eliminar carpetas vacías

Para eliminar todos los directorios vacíos en un árbol de directorios, debe usar:

find /dir -type d -empty -delete

Aquí hay una explicación de las opciones utilizadas:

  • /dir: busca de forma recursiva el directorio /dir.
  • -tipo d: limita la búsqueda a directorios.
  • -empty: limita la búsqueda a directorios vacíos solamente.
  • -delete: elimina todos los directorios vacíos que se encuentran en el subárbol. -delete solo puede eliminar directorios vacíos. Utilice la opción -delete con extrema precaución.

Con el comando rm, puede recibir un mensaje similar al siguiente:

/bin/rm: Argument list too long

Este mensaje de error aparece cuando se usa el comando rm para eliminar un directorio que contiene una gran cantidad de archivos. Esto sucede porque la cantidad de archivos es mayor que el límite del sistema. Hay varias soluciones a este problema. Por ejemplo, puede cd al directorio y manualmente o usando un bucle para eliminar subdirectorios uno a la vez. La solución más simple es eliminar primero todos los archivos dentro del directorio con el comando buscar, luego eliminar el directorio:

find /dir -type f -delete && rm -r /dir

Conclusión

Con rm y find puede eliminar directorios según diferentes criterios de manera rápida y eficiente. Eliminar directorios es un proceso simple y fácil, pero debe tener cuidado de no eliminar datos importantes.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.