diretório com milhões de arquivos: maneira eficiente de listar arquivos com memória (linux/ext4)

diretório com milhões de arquivos: maneira eficiente de listar arquivos com memória (linux/ext4)

Infelizmente eu tenho um aplicativo que coloca milhões de arquivos em um diretório simples (sem subdiretórios)

Se eu executar um ls ou find no diretório fornecido, ls ou find consumirão vários Gigabytes de RAM.

Eu acho que a razão é que ls e find leem todos os arquivos de um diretório na RAM.

Minha pergunta é.

Existe alguma forma de listar os arquivos deste diretório sem consumir tanta memória?

Qualquer solução (opções especiais/comandos diferentes/programa C para compilar/um módulo python especial) seria interessante.

Responder1

Há:

O lscomando não apenas lê os nomes dos arquivos, mas também fstat()lê todos os arquivos. Se você usar a opendir() / readdir() / close()sequência, você se sairá muito melhor.

Além disso, os recursos necessários para listar um diretório também são função do sistema de arquivos: XFSusa muito menos que ext4.

informação relacionada