RexCode logo 瑞碼工坊 RexCode

如何在 macOS 比對兩個資料夾

資料夾比對(Folder Compare)是找出兩個目錄之間「哪些檔案新增、刪除、或內容不同」的技術,常用於版本管理、備份驗證、以及部署前後的差異確認。

舉幾個你可能天天遇到的情境:確認備份硬碟和原始資料夾是否完全一致、部署網站前比對 build 輸出有沒有意外改動、把同事傳來的專案和自己手上的版本對齊、或是清理重複檔案前先看兩個資料夾差在哪。這些都是資料夾比對要解決的問題。

以下介紹三種在 macOS 上做資料夾比對的方法,從最快上手的 GUI 工具到 Terminal 指令都有,最後附一張對照表幫你選。


方法一:用 Lode(最直觀,推薦)

Lode 是一款原生 macOS 工具(Tauri 2 + Rust),整合了資料夾比對、檔案 Diff、全文搜尋與 Hex 檢視。Folder Compare 是其核心功能之一,後端用 Rust 非同步 I/O,掃描幾千個檔案幾乎是秒出。

操作步驟

  1. 下載並安裝 Lode
  2. 開啟 Lode,點選 Folder Compare 模式
  3. 將左側資料夾拖進左欄、右側資料夾拖進右欄
  4. Lode 立即展開雙欄樹狀結構並標色

顏色語義

顏色 意義
🟢 綠色 僅右側有(新增)
🔴 紅色 僅左側有(刪除)
🟠 橙色 兩側都有,但內容不同(修改)
⬜ 白色 完全相同

雙擊橙色檔案,Lode 自動切換到 File Compare,側邊並列逐行 diff,逐行高亮顯示差異。比對結果裡還能直接用全文搜尋定位特定檔名或內容,對大型目錄特別有用。

小技巧

Rex 親身經驗:我平時用 Lode 比對 _site/ build 前後的差異,部署前快速確認沒有意外改動。之前用 Terminal 的 diff -rq 輸出太長、很難一眼掃過,Lode 的雙欄樹直覺多了——尤其是要在幾百個檔案裡找出那兩三個改動時,顏色標記比讀文字清單快太多。


方法二:Terminal diff -rq(無需安裝)

macOS 內建 diff 指令,加上 -r(recursive)和 -q(只顯示有差異的檔案)即可快速比對:

diff -rq /path/to/folder-A /path/to/folder-B

輸出會列出三類結果:Only in A:(A 獨有)、Only in B:(B 獨有)、Files A/x and B/x differ(兩邊都有但不同)。

只看特定副檔名(例如 .py):

diff -rq --include="*.py" /path/to/folder-A /path/to/folder-B

排除雜訊目錄:

diff -rq --exclude=.git --exclude=node_modules /path/to/folder-A /path/to/folder-B

優點:零安裝、可寫進腳本與 CI、輸出可被 grep / awk 二次處理。 限制:純文字輸出,大量檔案時難以閱讀;不支援圖形化逐行 diff;要看實際內容差異還得再對單檔跑一次 diff


方法三:Xcode 內建 FileMerge

如果你已安裝 Xcode Command Line Tools,可以用 opendiff

opendiff /path/to/folder-A /path/to/folder-B

這會開啟 Apple 的 FileMerge,提供基本的 GUI 比對介面,可以點進單檔看並列 diff。功能比 Lode 陽春(沒有全文搜尋、沒有 hex、UI 較舊),但完全免費且已預裝在裝有 Xcode 工具鏈的 Mac 上,臨時用一下很方便。

若還沒裝 Command Line Tools,執行 xcode-select --install 即可。


三種方法比較

工具 安裝需求 GUI 即時搜尋 Hex 支援 適合情境
Lode 需安裝 ✅ 雙欄樹 日常開發比對、備份驗證
diff -rq 無(內建) 快速腳本、CI pipeline
FileMerge Xcode CLT ✅ 基本 偶爾用、不想裝額外工具

怎麼選? 要寫進自動化腳本或 CI,用 diff -rq;偶爾比一次又不想裝東西,用 FileMerge;如果是天天要做、而且常需要進一步看內容差異或搜尋,Lode 的體驗最順。


常見問題

Q:Lode 支援 M1/M2/M3 嗎? A:支援。Lode 是原生 Apple Silicon 編譯的 macOS App,在 M1/M2/M3 上執行流暢,啟動不到一秒。

Q:比對含大量小檔案的 node_modules 會很慢嗎? A:Terminal diff -rq 在 node_modules 這類巨型目錄會很慢。Lode 的 Rust 後端用非同步 I/O 比較快,但仍建議排除 .gitnode_modules 這類雜訊目錄,結果也比較好讀。

Q:可以只比對特定子目錄嗎? A:可以。在 Lode 中,左右欄可以各自選不同深度的子目錄;Terminal 則直接傳入目標子目錄路徑即可。

Q:能比對兩顆外接硬碟或網路磁碟機嗎? A:可以。只要該磁碟在 Finder 掛載得到,三種方法都能指向它的路徑(通常在 /Volumes/磁碟名稱/)。比對網路磁碟機時,速度會受網路頻寬影響。

Q:比對結果可以只看「有差異」的檔案嗎? A:可以。diff -rq 本來就只列出有差異的;Lode 可以用篩選收起「完全相同」的項目,只留新增、刪除、修改。

🔨
本文介紹的工具:Lode

原生 macOS 工作台,整合 Folder Diff、File Diff、Binary Diff、全文搜尋,一個 App 搞定。