Unix命令行:如何获取最近30天修改文件的总大小

Posted

技术标签:

【中文标题】Unix命令行:如何获取最近30天修改文件的总大小【英文标题】:Unix command line : How to get the total size of modified files in the last 30 days 【发布时间】:2012-04-16 04:04:01 【问题描述】:

我想知道如何获取最近 30 天内修改文件的总大小。

我找到了这个命令,它只给我过去 30 天内修改文件的列表。

find . -name '*' -mtime -30

这很有用,但我想知道这个列表的总大小。

有人可以帮忙解决这个问题吗?

【问题讨论】:

我已标记将此问题移至超级用户,这是您更有可能(最?)在此问题上获得帮助的堆栈交换站点。 @Li-aungYip 绝对不是。正确的是:unix.stackexchange.com @Let_Me_Be :我更喜欢超级用户——它更活跃。但无论如何,SO似乎已经解决了这个问题,所以没关系。 ;) -name '*' 可以删除。它匹配所有文件,并且由于所有谓词都一起进行了与运算,因此与真正的谓词进行与运算是无用的。 【参考方案1】:

也许这样可以:

find . -mtime -30 -exec ls -l  \;| awk 's+=$5 END print "Total SIZE: " s'

【讨论】:

从来没有。只是原始语句中的复制粘贴错误。我已将其从示例中删除。发现詹斯!【参考方案2】:

您可以通过 find 输出每个文件的大小来做到这一点,然后 total them up with awk

find . -name '*' -mtime -30 -printf '%s\n' | awk 's+=$1 END print s'

【讨论】:

【参考方案3】:

尝试将您的工作 find 命令的输出通过管道传送到 du 以查看输出是否令人满意。您可以使用du 开关-c 生成总数,也可以选择使用-h 使其可读。

例如:

<your command> | du -c

变成:

find . -name '*' -mtime -30 | du -c 

如果你只想要总行:

find . -name '*' -mtime -30 | du -c | grep "total"

产生输出:

360     total

并使用du -ch 产生:

360K    total

【讨论】:

以上是关于Unix命令行:如何获取最近30天修改文件的总大小的主要内容,如果未能解决你的问题,请参考以下文章

sh 如何从命令行确定目录(文件夹)的总大小?

批处理如何实现删除当前目录内最近修改时间3天以外的所有文件?

cProfile命令行如何减少输出

LINUX下如何查看一个文件夹下所有文件的总大小?

如何在 Windows 命令行上获取一组文件的最后修改日期?

LINUX下如何查看一个文件夹下所有文件的总大小?