比較2個資料夾或檔案的差異
diff [參數][文件1或目錄1][文件2或目錄2]
參數
-
指定要顯示多少行的文本。此參數必須與-c或-u參數一併使用。-a
或--text
diff預設只會逐行比較文本文件。-b
或--ignore-space-change
不檢查空格字符的不同。-B
或--ignore-blank-lines
不檢查空白行。-c
顯示全部內文,並標出不同之處。-C
或--context
與執行」-c-「指令相同。-d
或--minimal
使用不同的演算法,以較小的單位來做比較。-D
或ifdef
此參數的輸出格式可用於前置處理器巨集。-e
或--ed
此參數的輸出格式可用於ed的script文件。-f
或-forward-ed
輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處。-H
或--speed-large-files
比較大文件時,可加快速度。-l
或--ignore-matching-lines
若兩個文件在某幾行有所不同,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異。-i
或--ignore-case
不檢查大小寫的不同。-l
或--paginate
將結果交由pr程序來分頁。-n
或--rcs
將比較結果以RCS的格式來顯示。-N
或--new-file
在比較目錄時,若文件A僅出現在某個目錄中,預設會顯示:Only in目錄:文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。-p
若比較的文件爲C語言的程序碼文件時,顯示差異所在的函數名稱。-P
或--unidirectional-new-file
與-N類似,但只有當第二個目錄包含了一個第一個目錄所沒有的文件時,纔會將這個文件與空白的文件做比較。-q
或--brief
僅顯示有無差異,不顯示詳細的信息。-r
或--recursive
比較子目錄中的文件。-s
或--report-identical-files
若沒有發現任何差異,仍然顯示信息。-S
或--starting-file
在比較目錄時,從指定的文件開始比較。-t
或--expand-tabs
在輸出時,將tab字符展開。-T
或--initial-tab
在每行前面加上tab字符以便對齊。-u
,-U
或--unified=
以合併的方式來顯示文件內容的不同。-v
或--version
顯示版本信息。-w
或--ignore-all-space
忽略全部的空格字符。-W
或--width
在使用-y參數時,指定欄寬。-x
或--exclude
不比較選項中所指定的文件或目錄。-X
或--exclude-from
您可以將文件或目錄類型存成文本文件,然後在=中指定此文本文件。-y
或--side-by-side
以並列的方式顯示文件的異同之處。--help
顯示幫助。--left-column
在使用-y參數時,若兩個文件某一行內容相同,則僅在左側的欄位顯示該行內容。--suppress-common-lines
在使用-y
參數時,僅顯示不同之處。
# 比較兩個目錄內檔案的差異,列出所有差異處
diff -bur folder1/ folder2/
# 比較兩個目錄內檔案的差異,只列出有差異的檔案名稱
diff -qr folder1/ folder2/
# 排序整理輸出
diff -qr folder1/ folder2/ | sort
# 兩個文件的每一行對比輸出
diff file1.txt file2.txt -y -W 50
# 比較兩個文件不同,並生產補丁
diff -ruN file1.txt file2.txt > patch.txt
# patch file1.txt patch.txt
patch file1.txt patch.txt
參考資料
https://officeguide.cc/linux-diff-files-in-two-different-directories-tutorial-examples/