Androide

Cómo eliminar (eliminar) el directorio en Linux

Linux Tip #23: Eliminar un Directorio en Linux

Linux Tip #23: Eliminar un Directorio en Linux

Tabla de contenido:

Anonim

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 es rm -r . {} + : agrega los archivos encontrados al final del comando rm .

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 terminal