directorio con millones de archivos: forma eficiente de memoria para enumerar archivos (linux/ext4)

directorio con millones de archivos: forma eficiente de memoria para enumerar archivos (linux/ext4)

Lamentablemente tengo una aplicación que coloca millones de archivos en un directorio plano (sin subdirectorios)

Si realizo un ls o un find en el directorio dado, entonces ls o find consumen varios Gigabytes de RAM.

Supongo que la razón es que ls y find leen todos los archivos de un directorio en la RAM.

Mi pregunta es.

¿Hay alguna forma de listar los archivos de este directorio sin consumir tanta memoria?

Cualquier solución (opciones especiales/diferentes comandos/programa C para compilar/un módulo especial de Python) sería interesante.

Respuesta1

Hay:

El lscomando no solo lee los nombres de los archivos, sino que también fstat()lee cada archivo. Si utilizas la opendir() / readdir() / close()secuencia lo harás mucho mejor.

Además de eso, los recursos necesarios para listar un directorio también son función del sistema de archivos: XFSutiliza mucho menos que ext4.

información relacionada