在 Linux 上获取文件夹大小

在 Linux 上获取文件夹大小

我在 /home/ 下有很多主文件夹,我想以易于阅读的列表形式获取每个用户文件夹的总大小。

IE

  1. /home/user1 100MB
  2. /home/user2 24MB
  3. /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/*

你应该高兴。

相关内容