检测文件夹大小是否超过指定大小的最快方法是什么?
有没有什么快速的方法可以检查一个文件夹的大小是否超过了特定的大小,比如说10MB、1GB、10GB等,而不需要实际去计算这个文件夹的大小?就像是配额一样。如果能用Python来解决那就最好了,不过标准的UNIX工具也可以。
4 个回答
2
我得说这是不可能的。我不相信任何文件系统会缓存文件夹的大小。无论你怎么做,都必须以某种方式遍历文件夹结构。使用 du
可能是最快的方法,因为它的处理都是用C语言写的。
如果你知道预期的最大文件大小,或者系统支持的最大文件大小,你可以通过计算每个文件夹里的文件数量来稍微优化一下,而不是计算文件的大小。如果文件数量不够达到这个限制,你就可以直接跳过计算。
2
你可以使用 du -sb
这个命令,它会计算文件夹的大小。例如:
threshold=1024000 #bytes
path="/your/path"
s=$(du -sb "$path")
set -- $s
size=$1
if [ "$size" -gt $threshold ];then
echo "size of $path greater than $threshold"
fi
4
import os
from os.path import join, getsize
def getsize_limited(directory, limit):
total_size = 0
for root, dirs, files in os.walk(directory, topdown=False):
for name in files:
total_size += getsize(join(root, name))
if total_size > limit:
return limit, False
return total_size, True
示例:
size, within_limit = getsize_limited(os.getcwd(), limit=10**6)