2010-10-03 69 views

回答

5

Perl對此有Filesys::DiskUsage。只有一個缺點,它在計數時不佔用目錄的大小。只有文件的大小。

use Filesys::DiskUsage qw/du/; 
$size = du ({ 'sector-size' => 1024 } , { 'human-readable' => 1 } , qw%/home/Mary%); 
print "Total size: $size\n"; 
+1

引用的路徑與'/'它與'路徑分隔符使用'qw' /'作爲分隔符是有點不幸。 – rafl 2010-10-03 02:32:42

+0

@rafl:哎呀...我的壞。我的Perl有點生疏;) – Wolph 2010-10-03 02:40:58

+0

還有一些缺點包括它不能正確處理稀疏文件,也不能自動確定文件系統的塊大小。你係統的'du'命令可能更準確。 – cjm 2010-10-03 03:00:54

1

如果Perl是不是必須的,你可以使用shell命令

find /home -user "Mary" -type f -printf "%s\n" | awk '{sum+=$1}END{print sum" bytes"}' 
+2

@ user131527:在這種情況下,爲什麼不直接調用'du'呢? – Wolph 2010-10-03 02:41:43

+1

@WoLpH,問題在於,在/ home/Mary中,可能存在不屬於Mary的文件(不要問我爲什麼)......使用du不那麼「​​準確」。並使用用戶名查找更靈活 – ghostdog74 2010-10-03 02:56:59

+0

@ user131527:同意,它稍微不敏感。但由於用戶通常不允許更改所有者,並且創建文件會自動將用戶設置爲所有者,所以風險可以忽略不計;) – Wolph 2010-10-03 03:18:23

相關問題