我最近遇到了這個問題:
find /tmp/tmp33hn25wv -type f -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'
10420224
du -bs /tmp/tmp33hn25wv
12198004 /tmp/tmp33hn25wv
結果始終不同。所有檔案都以區塊大小位元組的倍數寫入。
哪裡有杜找到這些額外的位元組嗎?我知道檔案系統可能需要更多或更少的空間來儲存檔案的內容,但我希望該-b
選項du
意味著它必須計算「表觀」大小,而不是檔案系統使用的大小...
答案1
du
包括目錄的大小。如果您已新增-type d
至find
標準,您可能會得到您想要的結果(我在僅包含標準檔案的目錄樹上執行此操作):
find /tmp/tmp33hn25wv \( -type f -o -type d \) -exec stat --format='%s' {} + |\
awk '{s+=$1} END {print s}'
但是,可能還有其他文件類型佔用空間,因此請嘗試完全省略類型檢查:
find /tmp/tmp33hn25wv -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'