Linux

Linux 使用 diff 指令比較兩個目錄的檔案差異教學與範例

介紹在 Linux 系統中如何使用 diff 指令比較兩個目錄,快速找出有差異的檔案以及內容。

比較目錄差異

Linux 的 diff 指令最常拿來比較不同檔案之間的差異,但它也以用於比對整個目錄下的所有檔案。

# 比較兩個目錄內檔案的差異,列出所有差異處
diff -bur folder1/ folder2/
只在 folder1/ 存在:cfg2.py
diff --color -bur folder1/data.txt folder2/data.txt
--- folder1/data.txt	2020-03-02 08:21:10.960236700 +0800
+++ folder2/data.txt	2020-03-06 16:38:37.551001497 +0800
@@ -1,6 +1,5 @@
 -3 0.064 0.053
 -2 0.120 0.241
--1 0.176 0.398
 0 0.199 0.241
 1 0.176 0.053
 2 0.120 0.004
只在 folder2/ 存在:data.txt~
只在 folder2/ 存在:.data.txt.un~
只在 folder2/ 存在:text.dat

這裡用的 -b 參數是代表忽略空白的差異,-u 是以 unified 格式輸出檔案內容的差異,而 -r 則是以遞迴方式檢查所有子目錄。

只列出差異檔案名稱

如果只需要列出兩個目錄中有差異的檔案名稱,不列出有差異的檔案內容,可以改用 -qr 參數:

# 比較兩個目錄內檔案的差異,只列出有差異的檔案名稱
diff -qr folder1/ folder2/
只在 folder1/ 存在:cfg2.py
檔案 folder1/data.txt 與 folder2/data.txt 不同
只在 folder2/ 存在:data.txt~
只在 folder2/ 存在:.data.txt.un~
只在 folder2/ 存在:text.dat

若差異的檔案名稱數量較多,在輸出時會有點雜亂,可以加上 sort 將結果依據類型排序:

# 排序整理輸出
diff -qr folder1/ folder2/ | sort
只在 folder1/ 存在:cfg2.py
只在 folder2/ 存在:data.txt~
只在 folder2/ 存在:.data.txt.un~
只在 folder2/ 存在:text.dat
檔案 folder1/data.txt 與 folder2/data.txt 不同

參考資料:Stack Overflow

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago