К сожалению, у меня есть приложение, которое помещает миллионы файлов в один плоский каталог (без каких-либо подкаталогов)
Если я выполняю ls или find в указанном каталоге, то ls или find потребляют несколько гигабайт оперативной памяти.
Полагаю, причина в том, что ls и find считывают все файлы одного каталога в оперативную память.
У меня такой вопрос.
Есть ли способ вывести список файлов этого каталога, не занимая при этом много памяти?
Любое решение (специальные опции / различные команды / программа на языке C для компиляции / специальный модуль Python) было бы интересно.
решение1
Есть:
Команда ls
не только считывает имена файлов, но и fstat()
s каждый файл. Если вы используете последовательность, opendir() / readdir() / close()
вы сделаете гораздо лучше.
Кроме того, ресурсы, необходимые для перечисления каталога, также являются функцией файловой системы: XFS
использует гораздо меньше, чем ext4
.