如何列出所有用户及其在多个驱动器中的总消耗空间,并且仅针对特定文件扩展名?基本上类似于下面的输出:
User1 15T /datadrive01
User2 10T /datadrive01
User3 11gb /datadrive01
User1 20T /datadrive02
User2 10gb /datadrive02
User3 5gb /datadrive02
答案1
这将需要一段时间:
for mnt in /datadrive01 /datadrive02; do
find "$mnt" -printf '%u %k\n' 2>/dev/null \
| awk -v "mnt=$mnt" '{sum[$1]+=$2} END {for (u in sum) print u,sum[u],mnt}' \
| numfmt --from-unit=1000 --to=iec --field=2
echo
done
find
所有文件并打印大小为 (-printf '%u %k\n'
)的用户和磁盘使用情况- 总结
awk
每个用户的所有尺寸并打印。 - 可选择
numfmt
将尺寸转换为人类可读的格式 echo
只是为了中间的空白行