每个用户的磁盘使用情况摘要

每个用户的磁盘使用情况摘要

有没有办法获取给定路径下每个用户的磁盘使用情况?du似乎没有聚合每个用户的磁盘使用情况的选项,并且df似乎只报告驱动器上剩余的磁盘量。

这可以通过一条命令或 shell 上的几行命令来完成吗?任何指示将不胜感激。如果有帮助,我会使用zsh.

笔记:我们的文件系统未启用配额。

答案1

以下内容适用于GNU findawk

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 中没有任何相关内容。)

相关内容