包含數百萬個檔案的目錄:列出檔案的記憶體有效方式(linux / ext4)

包含數百萬個檔案的目錄:列出檔案的記憶體有效方式(linux / ext4)

不幸的是,我有一個應用程序,它將數百萬個檔案放在一個平面目錄中(沒有任何子目錄)

如果我對給定目錄執行 ls 或 find ,則 ls 或 find 會消耗數千兆位元組的 RAM。

我猜,原因是 ls 和 find 將一個目錄的所有檔案讀取到 RAM 中。

我的問題是。

有沒有辦法列出這個目錄下的檔案而不消耗那麼多記憶體?

任何解決方案(特殊選項/不同命令/編譯 C 程式/特殊 python 模組)都會很有趣。

答案1

有:

ls命令不僅讀取檔名,還fstat()讀取每個檔案。如果你使用這個opendir() / readdir() / close()序列,你會做得更好。

除此之外,列出目錄所需的資源也是檔案系統的功能:XFS使用的資源遠少於ext4.

相關內容