為什麼輸出是
du -sch ./
不完全相同於
du -sch ./*
例如,我du -sch
在用戶的主目錄中運行並獲得 51GB,但du -sch *
在同一目錄中運行則獲得 47GB。起初我以為這可能是隱藏檔案的原因,但這並不能解釋近 4GB 的隱藏檔案/資料夾。
我確實閱讀了磁碟實用程式的手冊,但找不到解釋。
答案1
起初我以為這可能是隱藏檔案的原因,但這並不能解釋近 4GB 的隱藏檔案/資料夾。
你是如何衡量的?我覺得你做有 4 GB 的隱藏檔案/目錄,如果涉及硬鏈接,甚至可能更多(某種意義上)。
這會告訴你(我放棄-h
以獲得更準確的結果;tail
僅通過“總計”;在 中測試bash
):
du -sc ./{.[!.],..?}* | tail -n 1 # hidden
du -sc ./* | tail -n 1 # non-hidden
du -sc ./{.[!.],..?,}* | tail -n 1 # hidden and non-hidden by wildcards
du -sc ./ | tail -n 1 # directory as a whole
(文法取自這個答案)。
第一個命令是您所缺少的。得到第一個和第二個結果的和;它將等於最後兩個結果,除非...
除非隱藏部分和非隱藏部分之間存在硬連結檔案。如果是這樣,總和會更大,因為當您手動求和時,這些檔案將被計算兩次,但du
在單次計算中僅計算一次。在這種情況下,隱藏檔案/目錄佔用的空間比您想像的還要多(儘管其中一些空間與非隱藏部分「共享」)。注意有-l
的選項du
控制此行為:
-l
,--count-links
如果硬連結則多次計算大小