# 安全找出並移除 Mac 上的大型檔案

> 解讀 APFS 快照、複製與可清除容量，再依所有權與可還原性分類大型檔案後才刪除。

Published: 2026-06-07 | Updated: 2026-09-05

找磁碟占用最快的辦法是測量，不必在 Finder 裡逐個翻資料夾。看到結果後還要判斷檔案用途：40 GB 的照片圖庫和 40 GB 的安裝套件，處理方式完全不同。APFS 快照、分身檔案和可清除空間也會影響統計，因此兩個工具顯示不同總數，不一定有誰算錯了。

## 檔案總和為什麼對不上磁碟占用

現代 Mac 使用 APFS 檔案系統。它與 Finder 統計空間的角度不同，差異通常來自本機快照和可清除空間。

- **本機快照**會在兩次 Time Machine 備份之間保存磁碟狀態。檔案已經刪除，只要快照仍引用它，舊資料區塊就會繼續占用空間。Apple 說明每小時快照通常保留約 24 小時，並在到期或空間不足時[自動刪除](https://support.apple.com/102154)。查看本機快照：

```shell
tmutil listlocalsnapshots /
```

- **可清除空間**包括快取、本機快照和能重新下載的內容，macOS 會在需要容量時自動回收。Finder 可能把它算進可用空間，但它不是一個可手動清空的目錄。

可以用三條指令核對磁碟狀態：

```shell
df -h /
diskutil apfs list
diskutil apfs listSnapshots /
```

`df` 顯示檔案系統的已用和可用容量，`diskutil apfs list` 顯示共享容器與各個卷宗，`diskutil apfs listSnapshots /` 列出啟動卷宗快照。結合來看，能分清普通檔案、快照和共享 APFS 空間。

## 用終端機測量目錄

`du` 適合查找大目錄：

```shell
du -sh ~/* ~/Library 2>/dev/null | sort -h
```

`-s` 彙總每一項，`-h` 使用容易閱讀的單位，`sort -h` 把最大的結果排在最後。每次深入一個大目錄即可。掃描雲端目錄或大型開發目錄會比較慢，受保護的應用程式資料還可能需要給終端機「完全取用磁碟」權限。

目錄大小不一定等於實體占用。硬連結給同一份資料多個檔案名稱，APFS 分身則會在副本修改前共享資料區塊。`du` 用來找候選項目，刪除重要資料前，再搭配 Finder 的「取得資訊」和 APFS 容量判斷。

查找個人目錄中的單個大檔案：

```shell
find ~/Downloads ~/Movies ~/Desktop -type f -size +500M -print 2>/dev/null
```

從下載項目、影片和桌面開始，常能找到遺忘的影片匯出、磁碟映像和壓縮檔，也不會鑽進應用程式資料庫。確有需要時再增加掃描目錄。

喜歡終端機介面時，可以用 `ncdu` 按大小瀏覽目錄。它很適合定位，但陌生目錄的歸屬並不明顯，確認用途後再到 Finder 移到垃圾桶會保留還原餘地。

## 快照或可清除空間很大時怎麼辦

先釋放一部分明確由自己管理的檔案，給 macOS 留出工作空間。系統會繼續縮減本機快照和可清除快取。重新連接 Time Machine 磁碟可以補齊備份歷史，但不會直接清空快照。多數時候不必強制處理這兩類空間。

## 用樹狀圖查看整個磁碟

<figure class="blog-diagram">
  <img src="https://mole.fit/img/en/analyze.webp" width="2584" height="1741" loading="lazy" alt="磁碟分析器把整個磁碟畫成樹狀圖，Library 是最大的 155.84 GB 區塊，www、下載和其他目錄顯示為較小區塊">
  <figcaption>樹狀圖按容量繪製目錄，點擊區塊可以繼續深入。這是 Mole 的「分析」檢視。</figcaption>
</figure>

終端機數字適合精確查看單個目錄，樹狀圖更容易比較整個磁碟。[Mole](https://mole.fit/tw/) 的「分析」檢視會從根目錄開始繪製，點擊區塊即可深入，也能在 Finder 中顯示檔案，或確認大小後移到垃圾桶。主目錄等導覽根節點沒有刪除入口。指令和樹狀圖回答的是同一個問題，選順手的即可。

## 磁碟分析器為什麼能更快

簡單指令稿會遍歷所有目錄，對每個檔案執行 `stat`，全部相加後再排序。面對數百萬個小檔案時，這種做法很慢，也占記憶體。Mole 的[開源命令列工具](https://github.com/tw93/Mole)在 `cmd/analyze` 中限制並行數量，並對硬連結去重。原生 App 使用獨立的 Swift 掃描器，思路相同。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/directory-size-pipeline.webp" width="1360" height="454" loading="lazy" alt="Mole CLI 磁碟分析器讀取目錄後把任務放入有上限的佇列，分別統計檔案與目錄、去重硬連結，再用堆保留最大的結果">
  <figcaption>CLI 會限制目錄任務、<code>du</code> 子行程和待處理佇列的數量，並用 Top-N 堆只保留最大的結果。</figcaption>
</figure>

目錄工作池會按 CPU 核心數在 2 到 12 之間調整，`du` 子行程最多同時執行 4 個。更多 `du` 只會讓磁碟爭搶讀寫。佇列也有限制，避免待處理目錄不斷堆積。

掃描器只保留最大的結果：目錄取前 30 項，檔案取前 20 項。結果進入最小堆，堆滿後只和目前最小項比較，不必把數百萬筆記錄全部放進記憶體排序。

硬連結會讓同一檔案出現多個名稱。掃描器記錄第一次見到的 `(device, inode)`，再次遇到便跳過，避免重複計算。同一次掃描中依賴去重順序得到的目錄大小不會寫入快取，以免後續單獨掃描時讀到不完整結果。

## 先分類，再決定是否刪除

- **可替代內容**：安裝套件、可重新建置的輸出，以及應用程式明確允許重建的快取。刪除前考慮重新下載或建置的時間
- **個人或工作資料**：照片、訊息、專案封存、虛擬機器磁碟、模型權重和裝置備份。透過對應應用程式匯出、備份或停用
- **應用程式或系統管理的資料**：套件管理工具資料庫、容器、照片或郵件資料庫、快照和 `/System` 下的檔案。使用應用程式提供的入口，或保持不動

如果大目錄屬於已經不用的應用程式，先走正式解除安裝流程，再[檢查殘留檔案](https://mole.fit/tw/blog/how-to-completely-uninstall-apps-on-mac)。普通檔案先移到垃圾桶，確認應用程式和專案正常後再清空。

## 按這個順序查找大檔案

先比較 `df`、APFS 容量和儲存空間設定，判斷是真正缺少實體空間，還是分類顯示有差異。接著測量選定目錄，沿最大的分支逐層查看，再按歸屬和還原方式分類。可替代內容優先處理，個人資料交給備份和對應應用程式管理。更完整的清理流程見[Mac 磁碟空間不足時如何安全釋放空間](https://mole.fit/tw/blog/how-to-free-up-space-on-mac)。

---

Canonical HTML page: https://mole.fit/tw/blog/how-to-find-large-files-on-mac
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
