获取去年内修改的目录中所有文件的大小

获取去年内修改的目录中所有文件的大小

我正在尝试评估 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

以下方法的好处是只依赖于常用实用程序dufind,这些实用程序和几乎在所有 Linux 上都是现成的。

du -hc $(find . -type f -mtime -365)

该方法的工作原理是使用 查找所有修改过的文件find,然后将所有这些文件传递给 来du计算大小。该-c选项可确保最后打印总计。

相关内容