![在 Linux 上获取文件夹大小](https://linux22.com/image/488664/%E5%9C%A8%20Linux%20%E4%B8%8A%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E5%A4%B9%E5%A4%A7%E5%B0%8F.png)
我在 /home/ 下有很多主文件夹,我想以易于阅读的列表形式获取每个用户文件夹的总大小。
IE
- /home/user1 100MB
- /home/user2 24MB
- /home/user3 54MB
ETC。
目前正在使用类似的东西
du -hc | grep total
答案1
在我看来,Ernie 和 Depesz 的答案合并最接近您的要求,只是它应该是 'du -s /home/*/ | sort -n'。'du -h' 无法使用 'sort -n' 正确排序,因为它不再是一个真正的数字,例如 10G 在 10M 之前排序
另一种选择是,如果您想找出每个用户使用的总磁盘空间,而不管它是否在他们的主目录中,可以安装配额实用程序,在相关文件系统上启用配额核算,但将每个用户的配额保留为 0(无限制)。这将告诉您使用的磁盘空间以及使用的文件/ inode 的数量。
然后您只需运行“repquota -a”即可获得如下报告:
*** 设备 /dev/sda8 上的用户配额报告 区块宽限期:7天;Inode宽限期:7天 块限制 文件限制 用户使用了软硬宽限期使用了软硬宽限期 用户1 -- 67844 0 0 7748 0 0 用户2 -- 21908 0 0 1742 0 0 用户3 -- 27212 0 0 258 0 0 用户4 -- 25492 0 0 328 0 0 用户5 -- 575536 0 0 2972 0 0 用户6 -- 83944 0 0 1114 0 0 用户7 -- 501304 0 0 3418 0 0 用户8 -- 760068 0 0 5011 0 0 用户9 -- 1445396 0 0 1932 0 0 ...
repquota 也有一个“-s”选项,用于“人类可读”的输出,就像 du 的“-h”一样。不过,毫不奇怪,它有与 du -h 相同的排序问题。
答案2
du -hcs /home/*/
或者,您确实想要的是:
for i in /home/*/; do
user=${i#/*/}
space=$(du -hs "$i" | cut -f1)
echo "${user%/} = $space"
done
答案3
您想找出什么?
如果您希望按大小排序,请尝试以下操作:
du -s /home/ |sort -n
答案4
只需运行这个:
du -sh /home/*
你应该高兴。