在 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