有没有办法获取给定路径下每个用户的磁盘使用情况?du
似乎没有聚合每个用户的磁盘使用情况的选项,并且df
似乎只报告驱动器上剩余的磁盘量。
这可以通过一条命令或 shell 上的几行命令来完成吗?任何指示将不胜感激。如果有帮助,我会使用zsh
.
笔记:我们的文件系统未启用配额。
答案1
以下内容适用于GNU find
和awk
:
find /path -type f -printf '%u %k\n' | awk '{
arr[$1] += $2
} END {
for ( i in arr ) {
print i": "arr[i]"K"
}
}'
答案2
您可以利用 zsh 的stat
内置功能。
zmodload zsh/stat
local -a stat
local -A usage
local x
for x in **/*(.); do
stat -A stat -- $x
((usage[$stat[5]] += stat[8]))
done
for x in ${(k)usage}; do
echo $usage[$x] ${${"$(getent passwd $x)"%%:*}:-$x}
done | sort -k1n
(getent
从用户 ID 检索用户名是 Linux 特有的,我认为 zsh 中没有任何相关内容。)