2010-03-10 72 views
2

什麼是最快速的方式來檢查文件夾大小是否超過特定的大小,比如說10 MB,1 Gb,10 GB等等,而沒有真正計算文件夾的大小。像配額一樣。 Pythonic解決方案將非常棒,但標準UNIX實用程序也歡迎檢查文件夾大小是否大於特定大小的最快方法是什麼?

+0

可能重複http://stackoverflow.com/questions/1392413/計算一個目錄大小使用python –

回答

1

文件夾大小仍然是文件夾內容的總大小。

您可以嘗試調用du -s foldername從蟒蛇

2

我不得不說這是不可能的。我不相信任何文件系統緩存文件夾的大小。無論你做什麼,都必須以某種方式或另一種方式走樹。使用du可能是最快的方法,因爲它將全部在C中發生。

如果您知道預期或支持的最大文件大小,您可以通過計算每個文件夾中的內容而不是大小和短期內優化,在沒有足夠文件達到限制的情況下切割。

+0

並儘快超出限制救助... – EJP

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 
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) 
相關問題