du — 顯示目錄與檔案的磁碟使用量

計算目錄或檔案的磁碟使用量,找出磁碟空間的佔用來源。

語法

du [選項] [目錄或檔案...]

常用選項

選項 說明 範例
-h, --human-readable 以人類可讀格式顯示(K/M/G) du -h
-s, --summarize 只顯示總計,不列出子目錄 du -sh /var/
-a, --all 顯示每個檔案(而非只顯示目錄) du -ah /var/log/
-d N / --max-depth=N 只遞迴到第 N 層深度 du -h --max-depth=1 /
--exclude=樣式 排除符合樣式的檔案 du -sh --exclude='*.log' /var/
-c, --total 在最後顯示所有指定項目的合計 du -sh * | sort -h
-x, --one-file-system 不跨越不同的檔案系統(避免計算掛載點) du -xsh /

使用範例

範例 1:查看目錄總大小

du -sh 顯示指定目錄的總大小(-s 只顯示合計,-h 人類可讀)。

$ du -sh /var/log/
2.3G	/var/log/
範例 2:找出子目錄中最大的項目

對當前目錄的所有子目錄計算大小,再用 sort -rh 排序找出最大的。

$ du -sh /var/* 2>/dev/null | sort -rh | head -10
2.3G	/var/log
1.2G	/var/cache
850M	/var/lib
範例 3:列出第一層目錄的大小

使用 --max-depth=1 只顯示直屬子目錄的大小,不深入遞迴。

$ du -h --max-depth=1 /home/user/
1.5G	/home/user/Downloads
450M	/home/user/Documents
12G	/home/user/Videos
14G	/home/user/
範例 4:找出大型檔案(含單一檔案)

使用 -a 包含所有檔案,搭配 sort 找出最大的檔案。

$ du -ah /var/log/ | sort -rh | head -5
2.3G	/var/log
1.8G	/var/log/journal
450M	/var/log/syslog.1

常見錯誤與排錯

du: cannot read directory '...': Permission denied
原因
對部分目錄沒有讀取權限(如 /root)。
解法
使用 sudo du,或將 2>/dev/null 加在後面過濾錯誤訊息。

延伸閱讀