0

这是场景。

想象一下我们有这种风格的目录结构——

/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 = “/tom”的总和 - 在所有可用的“201801”、“201802”、“201803”文件夹中目录树。想象一下“201801”、“201802”、“201803”代表用​​户文件夹的特定版本,我们想要计算所有这些用户的总数。我们可以假设“201801”, 201802","201803" 样式文件夹将始终位于树中的相同深度。

20GB /tom
10GB /harry
900MB /chris

希望这是有道理的。如果您有更好的标题,请告诉我,因为我不确定用一句话来解释我想要做什么的最佳术语。

谢谢!

4

1 回答 1

0

使用 GNU 实用程序dusort,您可以按照以下方式编写脚本:

#!/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
于 2020-09-08T10:39:39.577 回答