Linux 计算目录树中一组子目录的总磁盘使用率?

Linux 计算目录树中一组子目录的总磁盘使用率?,linux,bash,directory,du,disk-access,Linux,Bash,Directory,Du,Disk Access,下面是一个场景 想象一下,我们有这种类型的目录结构- /snapshots/201801/users/tom/ /snapshots/201802/users/harry/ /snapshots/201803/users/chris/ 等等 我试图在输出中得到的是名称目录的总磁盘使用量,但将所有“20180x”文件夹都考虑在内。最后,此输出应按最高磁盘使用率到最低磁盘使用率排序 作为一个非常基本的例子,如果我- du -h --max-depth=1 /snapshots/2018*/user

下面是一个场景

想象一下,我们有这种类型的目录结构-

/snapshots/201801/users/tom/
/snapshots/201802/users/harry/
/snapshots/201803/users/chris/
等等

我试图在输出中得到的是名称目录的总磁盘使用量,但将所有“20180x”文件夹都考虑在内。最后,此输出应按最高磁盘使用率到最低磁盘使用率排序

作为一个非常基本的例子,如果我-

du -h --max-depth=1 /snapshots/2018*/users/ | sort -n
输出将显示输出中每个“201801”、“201802”、“201803”目录的总目录磁盘使用量

我真正想要的是输出,显示给定用户在“201801”、“201802”、“201803”中的磁盘使用总量,然后按大小排序

因此,例如,结果输出需要显示磁盘空间总量,其计算方式为“20GB=目录树中所有可用的“201801”、“201802”、“201803”文件夹中“/tom”的总和“代表用户文件夹的特定版本,我们希望计算所有这些版本中每个用户的总数。我们可以假设“201801”、“201802”、“201803”样式的文件夹始终位于树中的相同深度

20GB /tom
10GB /harry
900MB /chris
希望这是有道理的。请让我知道,如果你有一个更好的标题,我可以用这个问题,因为我不知道最好的术语来解释什么,我试图在一个句子


谢谢

使用GNU实用程序
du
sort
,您可以按照以下思路编写脚本:

#!/bin/bash

users=(tom harry chris)

for user in "${users[@]}"; do
    usage=$(du -hc /snapshots/*/users/"$user")
    usage=${usage##*$'\n'}
    printf "%s\t%s\n" "${usage%%[[:blank:]]*}" "$user"
done | sort -h

我会先像你现在做的一样计算总数,把所有的东西都写进一个文件,然后写一个程序来处理这个文件,并对值进行汇总。在这种情况下,不使用
-h
可能会为自己的工作带来安全。