Diff

遞歸比較目錄與不同內容的摘要,而不檢查文件內容的差異

  • November 6, 2021

我想遞歸地比較兩個目錄的內容,顯示其中一個或另一個缺少哪些文件,以及哪些文件具有不同的內容。但我不想輸出文件中的差異,只是它們是否不同。不會有任何連結需要擔心。

我希望這不是重複的,我已經瀏覽了範例,但找不到答案。謝謝

通常這看起來已經很好了:

diff -rq dirA dirB

不幸的是,diff -rq沒有考慮文件名中的Unicode 等效性。這會導致問題,因為我來自 SanDisk 的外部 SSD 在 Unicode 文件名中使用的字節碼與我的 Mac 筆記型電腦不同。

例如,我的 MacBook 有以下文件:

tmp/Česky.txt
tmp/Česky/README.txt

我的 SSD 有以下相同的文件:

/Volumes/MySSD/Česky.txt
/Volumes/MySSD/Česky/README.txt

這些名稱在瀏覽器中看起來完全相同,但在我的機器上它們實際上是不同的。在 Python 中給出不同的字節碼:

# python3
>>> 'Česky'.encode()
b'C\xcc\x8cesky'
>>> 'Česky'.encode()
b'\xc4\x8cesky'

當我執行時diff -rq tmp/ /Volumes/MySSD/,我得到:

Only in /Volumes/MySSD/: Česky
Only in /Volumes/MySSD/: Česky.txt
Only in tmp/: Česky
Only in tmp/: Česky.txt

即使我只是將這些文件從筆記型電腦復製到外部驅動器!文件內容相同。

為避免同樣的問題,您可以使用此 Python 腳本來比較目錄。

引用自:https://unix.stackexchange.com/questions/314569