我正在尝试评估 Linux 服务器上的存储使用情况。
大部分存储空间都来自图像。我想看看能否了解去年修改的文件的大小。也许还有过去 5 年,看看与图像目录的总大小(40GB)相比如何
我已经尝试过du -h
并且这很方便,但我不知道如何按修改日期过滤这些结果。
答案1
如果实用数软件包已安装,numsum
提供了一种添加多个数字的简单方法;同时numfmt
简化了输出:
find . -type f -mtime -365 -printf '%s\n' | numsum | numfmt --to=iec
(find
代码借自Ziggy 无残忍时代精神。
最后5年做:
find . -type f -mtime -$((365 * 5)) -printf '%s\n' | numsum | numfmt --to=iec
如果需要准确的天数计数,date
将提供这一点。这是一个 shell 函数,它返回精确的过去天数n年:
# covert Last _n_ Years to Days
# usage: ly2d n
ly2d() \
{ echo $(( \
$(( `date -d today +%s` - \
`date -d $1" years ago" +%s` )) \
/ 60 / 60 / 24 )) ; \
}
ly2d
最后使用5年:
find . -type f -mtime -$(ly2d 5) -printf '%s\n' | numsum | numfmt --to=iec
答案2
您可以使用 perl 对 find 的输出进行求和:
find . -type f -mtime -365 -printf '%s\n' |\
perl -e 'my $s=0; while(<>) { $s += $_; } print "$s\n"'
答案3
以下方法的好处是只依赖于常用实用程序du
和find
,这些实用程序和几乎在所有 Linux 上都是现成的。
du -hc $(find . -type f -mtime -365)
该方法的工作原理是使用 查找所有修改过的文件find
,然后将所有这些文件传递给 来du
计算大小。该-c
选项可确保最后打印总计。