如何获取文件夹的总大小

如何获取文件夹的总大小

在 Solaris 服务器中,我如何获得此输出的总大小?你可以帮帮我吗?我需要了解过去 1 天文件的总大小

root@test:# find . -mtime -1 -type f | xargs du -sh
226M    ./10/01.tar
209M    ./10/02.tar
198M    ./10/03.tar
202M    ./10/04.tar
193M    ./10/05.tar
193M    ./10/06.tar
193M    ./10/07.tar
204M    ./10/08.tar
222M    ./10/09.tar
244M    ./10/10.tar
24G     ./10/00.tar
17G     ./10/01.tar
11G     ./10/02.tar
8.3G    ./10/03.tar
6.5G    ./10/04.tar
5.8G    ./10/05.tar
6.0G    ./10/06.tar
8.3G    ./10/07.tar

答案1

您可以使用该-c选项来获取c参数的累计磁盘使用情况,并total在末尾添加一行。所以在这里:

zsh -c 'du -hsc -- **/*(DoN.m-1) | tail -n 1'

这里使用zsh代替find -exec cmd {} +(它本身比非常不可靠的好得多find | xargs)来避免将文件列表拆分为多个调用du。然而,这意味着您可能会遇到执行时传递给命令的最大参数数量的限制。

如果您有权访问 GNU 实现du(可能gdu在您的系统上调用),您还可以执行以下操作:

find . -type f -mtime -1 -print0 | gdu --files0-from=- -hsc | tail -n 1

或者使用 的 GNU 实现find,获取以千字节为单位的总和(但如果存在硬链接则不会进行重复数据删除):

gfind . -type f -mtime -1 -printf '%k\n' |
  awk '{s+=$1}; END{print s+0}'

答案2

类似的东西可以完成这项工作:

 find . -mtime -1 -type f | xargs du -sk|awk '{a+=$1} END {print a}'

Solarisdu没有--bytes,因此您将得到千字节精度的结果。如果你想要以千兆字节为单位打印a除以的值1024*1024

相关内容