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 ls
comando 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: XFS
usa muito menos que ext4
.