我正在尝试创建 ext4 系统上文件大小分布的图表。我正在尝试编写一个脚本以某种方式从我的计算机中抓取这些信息。我不关心文件存储在目录结构中的位置,只关心每个文件占用多少空间。我知道文件大小存储在 inode 元数据中,如果存在这样的东西,那么读取 inode 表可能会非常快。有谁知道用于访问文件大小或直接从 inode 表读取的 C API?有谁知道inode表存储在哪里?
答案1
如果你想要一个 C API,你最终会得到 GNU nftw
,即 GNU 文件树遍历。不要欺骗自己使用普通的旧ftw
数据,你会得到不准确的数据。您需要编写一个“每个文件”函数,该struct stat
函数使用nftw
传递到“每个文件”函数的 。您可以使用“每个文件”功能将文件大小放入存储桶中,或者仅打印出文件大小,然后以其他方式将数字放入存储桶中。