首頁 > 檔案與目錄管理 > diff-r

diff -r:目錄遞歸比較

`diff` 命令用於查找兩個檔案之間的差異。加上 `-r`(或 `--recursive`)選項後,它會遞歸地比較兩個目錄的內容,詳細報告哪些檔案不同或僅存在於其中一個目錄。這對於追蹤和管理程式碼庫、設定檔或資料目錄的變更非常有用。

概述

`diff -r` 比較兩個目錄結構及其包含的檔案,以識別差異。它不僅報告檔案內容的差異,還報告僅存在於其中一個目錄的檔案或目錄。

主要特點

  • 遞歸比較兩個目錄中的檔案和子目錄
  • 詳細報告檔案內容的差異
  • 識別僅存在於其中一個目錄的檔案或目錄
  • 用於版本控制系統(VCS)中追蹤變更

主要選項

在 `diff` 命令的各種選項中,這些是與目錄遞歸比較 (`-r`) 結合使用的常用選項。

比較方法和輸出

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`diff-r` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

比較兩個目錄內容的各種 `diff -r` 使用範例。

遞歸比較兩個目錄

diff -r dir1 dir2

比較 dir1 和 dir2 目錄中的所有檔案和子目錄。

遞歸比較(簡潔摘要)

diff -rq dir1 dir2

僅列出有差異的檔案,省略檔案內容的詳細差異。

包含新檔案的比較

diff -rN dir1 dir2

將僅存在於其中一個目錄的檔案視為另一個目錄中的空檔案,並包含在比較結果中。

排除特定檔案/目錄

diff -r --exclude='.git' --exclude='*.log' dir1 dir2

排除 `.git` 目錄和副檔名為 `.log` 的檔案進行比較。

以統一格式建立補丁檔案

diff -ru dir1 dir2 > changes.patch

以統一格式輸出兩個目錄的差異,並將其儲存為 `changes.patch` 檔案。此檔案可透過 `patch` 命令套用。

提示與注意事項

`diff -r` 是一個強大的工具,但在比較大型目錄時,需要注意效能和輸出結果的解釋。

有效使用提示

  • **效能優化**:在比較大型目錄時,使用 `-q`(簡潔輸出)選項,僅確認是否存在差異而非詳細的檔案內容差異,可以提高比較速度。
  • **排除不必要檔案**:利用 `--exclude` 選項排除不需要比較的檔案或目錄,例如版本控制系統(如 `.git`, `.svn`)、建置產物(如 `*.o`, `*.pyc`)、日誌檔案(如 `*.log`)等,可以提高比較速度並減少輸出結果的雜訊。
  • **建立補丁檔案**:使用 `diff -ru dir1 dir2 > changes.patch` 命令建立的補丁檔案,可以透過 `patch -p1 < changes.patch` 命令輕鬆將變更套用到其他目錄。
  • **二進位檔案**:`diff` 主要針對文字檔案進行優化。若要僅檢查二進位檔案的差異,請使用 `cmp` 命令,或者 `diff` 會偵測到二進位檔案並輸出類似「Binary files ... differ」的訊息。

相同類別命令