Linux Tip #23: Eliminar un Directorio en Linux
Tabla de contenido:
- Antes de que empieces
- Eliminar directorios con
rmdir
- Eliminar directorios con
rm
- Eliminar directorios con
find
- Eliminar todos los directorios vacíos
- / bin / rm: lista de argumentos demasiado larga
- Conclusión
Hay varias formas diferentes de eliminar directorios en sistemas Linux. Si utiliza un administrador de archivos de escritorio, como Gnome's Files o KDE's Dolphin, puede eliminar archivos y directorios utilizando 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) de la línea de comandos.
, explicaremos cómo eliminar directorios en Linux usando los
rmdir
,
rm
y
find
.
Antes de que empieces
Cuando elimina un directorio utilizando su administrador de archivos de escritorio, el directorio se mueve realmente 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 se elimina el directorio utilizando los comandos explicados, no se puede recuperar por completo.
En la mayoría de los sistemas de archivos de Linux, la eliminación de un directorio requiere permiso de escritura en el directorio y su contenido. De lo contrario, recibirá el error "Operación no permitida".
Los nombres de directorio con un espacio en ellos deben escaparse con una barra diagonal inversa (
/
).
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ía:
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á usar el comando
rm
o eliminar 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 comando
rm
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 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, escribiría:
rm -r dir1
Si un directorio o un archivo dentro del directorio está protegido contra escritura, se le solicitará que confirme la eliminación. Para eliminar un directorio sin que se le solicite, 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 espacio. El siguiente comando eliminará cada directorio listado y sus contenidos:
rm -r dir1 dir2 dir3
La opción
-i
le dice a
rm
le
rm
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 la opción
-I
, que le indicará solo una vez antes de continuar con la eliminación.
rm -rI dir1
Para eliminar el directorio, escriba
y
y presione
Enter
.
rm: remove 1 argument recursively? y
También puede usar expansiones regulares para unir y eliminar múltiples 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 arriesgado. Primero se recomienda enumerar los directorios con el comando
ls
para que pueda ver qué directorios se eliminarán antes de ejecutar el comando
rm
.
Eliminar directorios con
find
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 coincidente.
El escenario más común es usar el comando
find
para eliminar directorios basados en un patrón. Por ejemplo, para eliminar todos los directorios que terminan con
_cache
en el directorio de trabajo actual que ejecutaría:
find. -type d -name '*_cache' -exec rm -r {} +
Analicemos el comando anterior:
-
/dir
: busca de forma recursiva en el directorio de trabajo actual (.
).-type d
: restringe la búsqueda a directorios.-name '*_cache'
- busca solo directorios que_cache
en_cache
-exec
- ejecuta un comando externo con argumentos opcionales, en este caso que esrm -r
.{} +
: agrega los archivos encontrados al final del comandorm
.
Eliminar todos los directorios vacíos
Para eliminar todos los directorios vacíos en un árbol de directorios que usaría:
find /dir -type d -empty -delete
Aquí hay una explicación de las opciones utilizadas:
-
/dir
: busca de forma recursiva en el directorio/dir
.-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.
Use la opción
-delete
con extrema precaución. La línea de comando de búsqueda se evalúa como una expresión y si agrega primero la opción
-delete
, el comando eliminará todo lo que esté debajo de los puntos de inicio que especificó. Siempre use
-delete
como la última opción y antes de eliminar, pruebe el comando primero sin la opción
-delete
.
/ bin / rm: lista de argumentos demasiado larga
Este mensaje de error aparece cuando utiliza el comando
rm
para eliminar un directorio que contiene una gran cantidad de archivos. Esto sucede porque el número de archivos es mayor que el límite del sistema en el tamaño del argumento de la línea de comando.
Hay varias soluciones diferentes para 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 el comando
find
y luego eliminar el directorio:
find /dir -type f -delete && rm -r /dir
Conclusión
Con
rm
and
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.
rm rmdir buscar terminalCómo obtener el tamaño de un directorio en Linux
El comando du muestra la cantidad de espacio de archivo utilizado por los archivos o directorios especificados.
Cómo agregar un directorio a la ruta en Linux
Cuando escribe un comando, el shell busca en todos los directorios especificados en la variable $ PATH del usuario un archivo ejecutable con ese nombre. Este artículo muestra cómo agregar directorios a su `PATH en sistemas Linux.
Cómo eliminar / eliminar usuarios en Linux (comando userdel)
En Linux, puede eliminar una cuenta de usuario y todos sus archivos asociados con el comando userdel. Este tutorial explica el comando userdel y sus opciones.