我想查看某个文件系统上的总磁盘使用情况。我执行了以下命令
du -h ~my_user_name
但是,这列出了 拥有的每个目录my_user_name
。我想获取所有这些信息的总和。传递的适当选项是什么?我试过了
du -h -c ~my_user_name
但那没有用。
答案1
传递-s
将du
限制输出仅为命令行上指定的项目。
du -sh ~
答案2
杜将仅显示每个文件夹的总数,而不是每个用户的总数。
如果您想要知道总大小,/home/example_user/
并且只有 example_user 在该文件夹中有文件,那么这种方法可能有效。如果其他用户也有文件,那么这种方法不会得出您拥有的所有文件的大小,而是得出该文件夹中所有文件的总大小。
要获取每个用户的信息,请执行以下操作之一:
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 {} +
这将仅查找一个级别的目录,按用户限制,排除父目录,并在最后打印每个目录和摘要。