Hay varias formas diferentes de eliminar directorios en los sistemas Linux. Si usa un administrador de archivos de escritorio como Gnome's Files o KDE's Dolphin, entonces puede eliminar archivos y directorios usando la interfaz gráfica de usuario del administrador. Pero, si está trabajando en un servidor sin cabeza o desea eliminar varios directorios a la vez, su mejor opción es eliminar los directorios (carpetas) desde la línea de comandos.
En este artículo, explicaremos cómo eliminar directorios en Linux usando el rmdir
, rm
y find
comandos.
Antes de comenzar #
Al eliminar un directorio con un administrador de archivos de escritorio, el directorio se mueve a la Papelera y se puede recuperar fácilmente.
Tenga mucho cuidado al eliminar archivos o directorios de la línea de comandos porque una vez que el directorio se elimina con los comandos explicados en este artículo, no se puede recuperar 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, obtendrá el error "Operación no permitida".
Los nombres de directorio con un espacio en ellos se deben escapar con una barra invertida (/
).
Eliminar directorios 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, sin necesidad de verificar si el directorio está vacío o no.
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
escribirías:
rmdir dir1
Si el directorio no está vacío, obtendrá el siguiente error:
rmdir: failed to remove 'dir1': No such file or directory
En este caso, deberá utilizar el rm
o elimine manualmente el contenido del directorio antes de poder eliminarlo.
Eliminar directorios con rm
#
rm
es una utilidad de línea de comandos para eliminar archivos y directorios. A diferencia de rmdir
el rm
El comando puede eliminar directorios vacíos y no vacíos.
Por defecto, cuando se usa sin ninguna opción rm
no elimina directorios. Para eliminar un directorio vacío, use -d
(--dir
) y para eliminar un directorio que no esté vacío, y todo su contenido use la -r
(--recursive
o -R
) opción.
Por ejemplo, para eliminar un directorio llamado dir1
junto con todo su contenido, escribiría:
rm -r dir1
Si un directorio o un 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, use -f
opción:
rm -rf dir1
Para eliminar varios directorios a la vez, invoque el rm
comando, seguido de los nombres de los directorios separados por espacios. El siguiente comando eliminará cada directorio enumerado y su contenido:
rm -r dir1 dir2 dir3
El -i
opción le dice a rm
para pedirle que confirme la eliminación de cada subdirectorio y archivo. Si el directorio contiene muchos archivos, esto puede ser un poco molesto, por lo que puede considerar usar -I
opción que le preguntará solo una vez antes de proceder con la eliminación.
rm -rI dir1
Para eliminar el tipo de directorio y
y pulsa Enter
.
rm: remove 1 argument recursively? y
También puede usar expansiones regulares para hacer coincidir y eliminar varios directorios. Por ejemplo, para eliminar todos los directorios de primer nivel en el directorio actual que termina con _bak
, usaría el siguiente comando:
rm -r *_bak
Usar expansiones regulares al eliminar directorios puede ser riesgoso. Se recomienda primero listar los directorios con el ls
comando para que pueda ver qué directorios se eliminarán antes de ejecutar rm
comando.
Eliminar directorios con find
#
find
es una utilidad de línea de comandos que le permite buscar archivos y directorios en función de una expresión determinada y realizar una acción en cada archivo o directorio coincidente.
El escenario más común es usar el find
Comando para eliminar directorios según un patrón. Por ejemplo, para eliminar todos los directorios que terminan en _cache
en el directorio de trabajo actual, ejecutaría:
find . -type d -name '*_cache' -exec rm -r {} +
Analicemos el comando anterior:
/dir
- búsqueda recursiva en el directorio de trabajo actual (.
).-type d
- restringe la búsqueda a directorios.-name '*_cache'
- buscar solo directorios que terminen con_cache
-exec
- ejecuta un comando externo con argumentos opcionales, en este caso, que esrm -r
.{} +
- agrega los archivos encontrados al final delrm
comando.
Eliminando todos los directorios vacíos #
Para eliminar todos los directorios vacíos en un árbol de directorios, debe ejecutar:
find /dir -type d -empty -delete
Aquí hay una explicación de las opciones utilizadas:
/dir
- búsqueda recursiva en el/dir
directorio.-type d
- restringe la búsqueda a directorios.-empty
- restringe la búsqueda solo a directorios vacíos.-delete
- elimina todos los directorios vacíos encontrados en el subárbol.-delete
solo puede eliminar directorios vacíos.
Usa el -delete
opción con extrema precaución. La línea de comando de búsqueda se evalúa como una expresión, y si agrega -delete
primero, el comando eliminará todo lo que esté debajo de los puntos de inicio que especificó.
Siempre pruebe el comando primero sin -delete
y use -delete
como última opción.
/bin/rm:Lista de argumentos demasiado larga #
Este mensaje de error aparece cuando usa el rm
comando 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 en el tamaño del argumento de la línea de comandos.
Hay varias soluciones diferentes a este problema. Por ejemplo, puede cd
al directorio y manualmente o usando un bucle para eliminar los subdirectorios uno por uno.
La solución más fácil es primero eliminar todos los archivos dentro del directorio con find
comando y luego elimine el directorio:
find /dir -type f -delete && rm -r /dir
Conclusión #
Con rm
y find
puede eliminar directorios en función de diferentes criterios de forma rápida y eficiente.
Eliminar directorios es un proceso simple y fácil, pero debe tener cuidado de no eliminar datos importantes.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.