Cómo eliminar los archivos de forma recursiva en Linux

Cómo eliminar los archivos de forma recursiva en Linux
Este tutorial de Linux explica cómo eliminar los archivos de manera recursiva utilizando diferentes técnicas disponibles.

Después de leer este artículo, podrá encontrar y eliminar archivos simples o múltiples de la línea de comando. Este tutorial está optimizado para usuarios de Linux nuevos y experimentados.

La primera sección de este tutorial explica cómo eliminar archivos de manera recursiva (directorios con todo su contenido y contenido de subdirectorios). A continuación, también agregué instrucciones para eliminar recursivamente ciertos tipos de archivos dependiendo de su tamaño, extensión, tiempo de creación o tiempo de modificación, y permisos.

Todos los ejemplos prácticos en este documento contienen capturas de pantalla para facilitar la comprensión de cada usuario de Linux y aplicarlos a sus necesidades.

Eliminar todos los archivos de manera recursiva en Linux

La primera sección muestra cómo usar el RM (Eliminar) comando para eliminar un directorio con todo su contenido, incluidos todos los subdirectorios con sus archivos y subdirectorios adicionales.

El RM Comando utilizado con -riñonal Flag eliminará el contenido de todos los directorios independientemente de su tipo.

Pero primero, veamos los directorios de mi casa usando el LS dominio.

ls ~/


Como puede ver, tengo 5 directorios: Escritorio, dir2, documentos, descargas, y removerecurdir.

Veamos el contenido del directorio llamado removerecurdir Usando el comando árbol Como se muestra en la captura de pantalla a continuación.

removerecurdir



De acuerdo con la árbol emitir el removerecurdir El directorio contiene dos directorios que contienen subdirectorios y un archivo dentro removecurdir: El directorio Dir1, con otro y OTRODIR2 subdirectorios y el directorio dir2 Contiene un archivo llamado archivo3.

Digamos que queremos eliminar el removecurdir y todo su contenido, incluidos todos los archivos y subdirectorios. El comando adecuado es el RM comando seguido de la -riñonal Bandera como se muestra en la sintaxis a continuación.

RM -R


Por lo tanto, si quiero eliminar el removerecurdir Con todo el contenido, ejecuto:

RM -R Removerecurdir/



El posterior LS La salida muestra el directorio, y todo su contenido se eliminó con éxito.

Cómo eliminar los archivos recursivamente por tamaño

Esta sección muestra cómo eliminar recursivamente archivos más pequeños que 10 megabytes usando el comando encontrar.

La sintaxis es la siguiente:

encontrar -Escriba F -tamaño - -EXEC RM +


Nota que en el ejemplo a continuación, uso sudo para obtener privilegios para eliminar archivos protegidos.

sudo find /var /log -type f -size -10m -exec rm +



La sintaxis para eliminar archivos superiores a un tamaño específico es muy similar. El símbolo menos (-) debe ser reemplazado por un símbolo más (+). La sintaxis exacta se muestra a continuación.

encontrar -Escriba F -tamaño + -EXEC RM +


En el siguiente ejemplo, usaré la sintaxis anterior para eliminar archivos superiores a 1 GB.

find /var /log -type f -size +1g -exec rm +


Cómo eliminar archivos de forma recursiva por extensión (tipo de archivo)

El capítulo actual explica cómo eliminar archivos de forma recursiva por tipo de extensión o tipo de archivo.

En mi casa tengo un directorio llamado testhint. Veamos su contenido usando el árbol dominio.

TestHint/



Como puede ver, el TestHint del directorio principal contiene un archivo (archivo1.txt) y dos subdirectorios: testHint2 que contiene archivo3.txt y el subdirectorio testHint3 que contiene archivo3 y algo.TXT.

Supongamos que solo desea eliminar recursivamente todos los archivos TXT. La sintaxis es la siguiente:

encontrar -escriba f -name '*.'-Print -delete


Por lo tanto, para eliminar todos los archivos TXT de manera recursiva dentro del directorio principal testhint, Ejecuto el comando que se muestra en la figura a continuación.

encontrar ~/testHint -type f -name '*.txt '-print -delete



Como puede ver, se eliminaron todos los archivos TXT, y solo archivo3 Sin una extensión permanece.

TestHint de árboles


También puede eliminar archivos por extensión usando encontrar Juntos con ejecución comandos, como explicaré a continuación.

Veamos un nuevo escenario con la misma estructura de directorio pero diferentes archivos.


La imagen de arriba muestra 4 archivos de registro y 3 archivos sin extensión.

La sintaxis para eliminar archivos por extensiones utilizando -ejecución es el siguiente:

encontrar -escriba f -name '*.'-exec rm -f \;


Así, para eliminar el .Archivos de registro de la captura de pantalla anterior, ejecuté el comando a continuación.

encontrar ~/testHint -type f -name '*.log '-exec rm -f \;



La imagen de arriba muestra todo .registro Los archivos se eliminaron mientras se quedaban otros archivos.

El Xargs El comando ofrece la misma solución. La diferencia entre Xargs y ejecución es que EXEC ejecuta la función RM cada vez que un archivo coincide con la condición. El comando XARGS ejecuta el comando RM una vez para todos los archivos encontrados que coinciden con la condición.

La sintaxis para eliminar todos los archivos por extensión con Find y XARGS es la siguiente:

encontrar -nombre "*."-print0 | xargs -0 rm


El nuevo escenario representado en la captura de pantalla a continuación muestra cinco .C archivos en diferentes subdirectorios y cinco archivos sin el .extensión C.


Para eliminar todo .C archivos usando Xargs Ejecuto el comando como se muestra a continuación.

encontrar . -nombre "*.c "-print0 | xargs -0 rm



Nuevamente, puede ver que los archivos de extensión seleccionados se eliminaron correctamente.

Eliminar todos los archivos de manera recursiva basada en permisos

Verifiquemos el nuevo contenido del testhint directorio.

Hay cuatro archivos con permisos completos (file2, file3.C, archivo6.c y file7).

Ahora supongamos que desea encontrar y eliminar todos los archivos con permisos completos para todos.

La sintaxis es la siguiente:

encontrar -permanente -print0 | xargs -0 rm


Por lo tanto, para eliminar todos los archivos con acceso completo a todos los usuarios, ejecuto el comando a continuación.

encontrar ~/testHint -Perm 777 -print0 | xargs -0 rm


Cómo eliminar los archivos de manera recursiva basada en la modificación o el tiempo de creación

La última sección de este tutorial explica cómo eliminar archivos de manera recursiva por tiempo de creación o modificación.

La sintaxis es la siguiente:

encontrar ~/testHint -Perm 777 -print0 | xargs -0 rm


Si desea eliminar los archivos creados o modificados en el último día (las últimas 24 horas), ejecute el siguiente comando, donde 1 es el número de días, y el símbolo menos (-) especifica los archivos creados o modificados antes del número definido de días.

encontrar -escriba f -mtime -1 -delete


Para eliminar los archivos creados o modificados antes de un día, antes de las 24 horas, simplemente reemplace el símbolo menos para un símbolo más.

encontrar -escriba f -mtime +1 -delete

Conclusión

Dado que Linux es un sistema operativo muy versátil y flexible, los usuarios tienen diferentes técnicas para obtener el mismo resultado. Todas las alternativas explicadas anteriormente son válidas para casi todas las distribuciones de Linux. Algunos de los comandos son incluso útiles para algunos sistemas UNIX. Como puede ver, implementarlos es fácil y cualquier usuario de Linux puede hacerlo independientemente de su nivel de conocimiento. Para eliminar archivos de manera recursiva de acuerdo con otras condiciones, verifique la página principal de cada comando descrito en este artículo.