无法通过ls获取目录的大小

时间:2009-03-24 22:53:06

标签: directory ls

我没有成功运行命令来获取目录的大小(文件里面的文件属于目录的大小)

ls -lSrh

我只获得了目录大小的千比特,而其内容超过了。

如何按 ls 列出目录的大小,包括其内容?

4 个答案:

答案 0 :(得分:20)

du -sh directory_name

ls将为您提供目录条目的大小,而不是目录内容的大小。基于我man ls的快速浏览,似乎没有办法让ls潜入并计算目录的大小(很可能是因为这将是一项昂贵的操作)。

答案 1 :(得分:3)

如果要获取目录大小,可以使用

du -sh

答案 2 :(得分:1)

du -hs非常棒,直到你有一个大目录。

例如,如果您存储缓存文件(例如Rails的文件系统缓存存储)或上传的文件,...使用分区架构,例如“cache / 123/456/789 / real_files”并且您有很多,du正在永远,最终阻止所有IO。

我没有更好的解决方案,但在高峰时间在生产服务器上运行之前要考虑这一点。

答案 3 :(得分:1)

在Sean Bright的回答基础上,您可以执行以下操作(在BASH中)

for each in $(echo */ | sed "s/ /\n/g" | sed "s/\///g");  do du -hs "$each"; done;

这将获取当前目录中所有目录的完整目录内容。