Diff
遞歸比較目錄與不同內容的摘要,而不檢查文件內容的差異
我想遞歸地比較兩個目錄的內容,顯示其中一個或另一個缺少哪些文件,以及哪些文件具有不同的內容。但我不想輸出文件中的差異,只是它們是否不同。不會有任何連結需要擔心。
我希望這不是重複的,我已經瀏覽了範例,但找不到答案。謝謝
通常這看起來已經很好了:
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 腳本來比較目錄。