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 加在後面過濾錯誤訊息。