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.