【问题标题】:in linux, how to (quickly) get a list of all files in a directory - with their filesize在 linux 中,如何(快速)获取目录中所有文件的列表 - 及其文件大小
【发布时间】:2014-07-20 16:51:39
【问题描述】:

我需要在 Linux 中获取所有文件及其大小的列表。

文件系统是 ext4,在 RAM 很少的机器上通过 USB 运行

我正在使用的功能是这些 - 有更好的技术吗?

a) opendir()
b) readdir()
c) stat()

我相信我在调用 stat() 时受到了很大的打击,我没有太多 RAM,而且 HD 是 USB 连接的

有没有办法说

“给我目录中的所有文件,以及文件大小?” - 我的猜测是我受到了影响,因为 stat() 需要去查询 inode 的大小,导致大量搜索?

【问题讨论】:

标签: linux filesystems ext4


【解决方案1】:

不,不是真的。如果您不想访问磁盘,则需要将 inode 缓存在内存中。这就是这种情况下的权衡。

不过,您可以尝试调整 inode_readahead_blksvfs_cache_pressure

【讨论】:

  • 粗鲁。我希望类似 inode_stash_cached_length_in_directory_entry :)
【解决方案2】:

使用cd 进入您想要获取文件和目录大小的目录,然后键入:

du -sh *

这将为您提供文件和目录的所有大小。 s 给出每个参数的总数,h 使输出可读。 * 表示它将显示该目录的所有内容。

键入 man du 以了解有关 du 命令的更多信息(qCtrl-c 退出)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多