特定用户的总磁盘使用量

Ale*_*lex 15 linux disk-space du memory-usage

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

du -h ~my_user_name
Run Code Online (Sandbox Code Playgroud)

但是,这列出了my_user_name. 我想获得所有这些信息的总和。通过的合适选项是什么?我试过

du -h -c ~my_user_name
Run Code Online (Sandbox Code Playgroud)

但这没有用。

Ign*_*ams 13

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

du -sh ~
Run Code Online (Sandbox Code Playgroud)


Hen*_*nes 11

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 打印命令,其他所有内容都被剥离,仅打印大小。)

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