检查文件夹大小是否大于特定大小的最快方法是什么?

时间:2010-03-10 06:21:59

标签: python linux shell

检查文件夹大小是否超出特定大小(如10 MB,1 Gb,10 GB等)的最快方法是什么,而不实际计算文件夹大小。像配额这样的东西。 Pythonic解决方案会很棒,但标准的UNIX实用程序也很受欢迎

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

我不得不说这是不可能的。我不相信任何文件系统缓存文件夹大小。无论你做什么,都必须以某种方式走树。使用du可能是最快的方法,因为它将在C中发生。

如果您知道预期或支持的最大文件大小,您可以通过计算每个文件夹中的内容来优化一点,而不是在没有足够的文件来满足限制的情况下的大小和快捷方式。

答案 2 :(得分:2)

您可以使用du -sb,但仍需要计算文件夹大小.eg

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

答案 3 :(得分:1)

文件夹大小仍然是文件夹内容的总大小。

您可以尝试从python

中调用du -s foldername