特定用户的磁盘总使用量


12

我想查看特定文件系统上自己的磁盘总使用量。我执行了命令

du -h ~my_user_name

但是,它列出了拥有的每个目录my_user_name。我想获得所有这些信息的总和。什么是合适的选择?我试过了

du -h -c ~my_user_name

但这没有用。

Answers:



9

Du只会显示每个文件夹的总数,而不是每个用户的总数。

例如,如果您想要的总大小,/home/example_user/并且仅该example_user在该文件夹中有文件,则可能可行。如果其他用户中有文件,则不会得出您拥有的所有文件的大小,而是该文件夹中所有文件的总大小。

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

  1. 如果启用了quota,请使用这些命令。
  2. 使用find遍历您要在其中计算文件的所有目录。使用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完成的。


+1好点,谢谢!下面的答案实际上正是我想要的。在我的情况下,用户/文件夹的区别并不重要
Alex

真好 du -sch是经常使用的简单命令。尽管可以一揽子地完成,但要弄清混合在一起时谁拥有的东西要困难得多。我曾经使用过它,但是今天却很难重建它。
轩内斯

帮了我很多,完美的解释
巴宾Lonston

2

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

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

您可以根据特定需求进行进一步修改,例如,我经常想按文件夹来总结使用情况,并且以下工作很好:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.