特定用户的总磁盘使用量

特定用户的总磁盘使用量

我想查看某个文件系统上的总磁盘使用情况。我执行了以下命令

du -h ~my_user_name

但是,这列出了 拥有的每个目录my_user_name。我想获取所有这些信息的总和。传递的适当选项是什么?我试过了

du -h -c ~my_user_name

但那没有用。

答案1

传递-sdu限制输出仅为命令行上指定的项目。

du -sh ~

答案2

将仅显示每个文件夹的总数,而不是每个用户的总数。

如果您想要知道总大小,/home/example_user/并且只有 example_user 在该文件夹中有文件,那么这种方法可能有效。如果其他用户也有文件,那么这种方法不会得出您拥有的所有文件的大小,而是得出该文件夹中所有文件的总大小。

要获取每个用户的信息,请执行以下操作之一:

  1. 如果你有配额已启用,请使用这些命令。
  2. 使用寻找遍历所有想要统计文件数量的目录。使用 uid仅选择您的文件并保留关联数组在 awk 中计算总数。

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

请注意,这使用了 GNU 查找特定扩展。

  • 第一个命令搜索 中的所有文件和目录/path/to/search/
  • -type f确保您只选择文件,否则您还会计算目录的大小。(尝试创建一个空文件夹。它可能会使用 4k 磁盘空间)。
  • -user username_whos_files_to_count仅选择一个用户的结果
  • -printf "%s\n"将打印尺寸。

如果您只运行此命令的第一部分,您将获得一串数字。这些是文件大小。(其他所有内容都被删除,只有大小会通过 %s print 命令打印出来。)

然后,我们可以将所有这些数字相加,得到一个摘要。在本例中,这是用 awk 完成的。

答案3

要查找特定用户的所有使用情况,一个好的命令是:

find -user $USER -type f -exec du -chs {} +

您可以根据具体需求进一步修改,例如,我经常想按文件夹总结使用情况,以下方法很有效:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

这将仅查找一个级别的目录,按用户限制,排除父目录,并在最后打印每个目录和摘要。

相关内容