GNU/Linux >> Tutoriales Linux >  >> Linux

Forma más rápida de eliminar una gran cantidad de archivos

find … -exec rm {} \; ejecuta el rm comando para cada archivo. Aunque iniciar un nuevo proceso es bastante rápido, sigue siendo mucho más lento que el mero hecho de eliminar un archivo.

find … -exec rm {} + llamaría rm en lotes, que es mucho más rápido:pagas el costo de ejecutar rm una vez por lote, y cada lote realiza muchas eliminaciones.

Aún más rápido es no invocar rm en absoluto. El find el comando en Linux tiene una acción -delete para eliminar un archivo coincidente.

find ./cache -type f -mtime +0.5 -delete

Sin embargo, si está produciendo archivos a tal velocidad que find … -exec rm {} \; no puede seguir el ritmo, probablemente haya algún problema con su configuración. Si cache contiene millones de archivos, debe dividirlo en subdirectorios para un acceso más rápido.


Intenta usar xargs :

find ./cache -mtime +0.5 -print0 | xargs -0 rm -f

Explicación actualizada para @pradeepchhetri

Si usa find con -exec , cada archivo que find encontrado llamará a rm una vez. Entonces, si encontró una gran cantidad de archivos, es decir, 10000 archivos, llamó a rm 10000 veces.

xargs tratará la salida de find como argumento de comando para rm , por lo que xargs proporcionará tantos argumentos como rm puede manejar a la vez, es decir, rm -f file1 file2 ... Por lo tanto, hace menos llamadas de bifurcación, hace que el programa se ejecute más rápido.


Linux
  1. ¿Cuál es la mejor manera de contar el número de archivos en un directorio?

  2. Cómo encontrar y eliminar directorios y archivos vacíos en Unix

  3. Eliminar archivos coincidentes en todos los subdirectorios

  4. ¿Cómo contar el número total de líneas de archivos encontrados?

  5. Buscar directorios que contengan un cierto número de archivos

Encuentra archivos grandes en Linux

Cómo encontrar y eliminar archivos duplicados en Linux

Cómo mover una gran cantidad de archivos en Linux

Cómo copiar una gran cantidad de archivos en Linux

Cómo Gzip archivos grandes (100GB+) más rápido en Linux

Linux:busque el número de archivos en un directorio y subdirectorios