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天修改文件的总大小的主要内容,如果未能解决你的问题,请参考以下文章
批处理如何实现删除当前目录内最近修改时间3天以外的所有文件?