2009-03-03 119 views
3

我有一個大的目錄,只包含CS和Math中的東西。它的大小超過了16GB。類型是文本,png,pdf和chm。我目前有兩個分支:我兄弟和我的分支。最初的文件是相同的。我需要比較它們。我嘗試過使用Git,但是加載時間很長。兩個大目錄之間的比較

什麼是比較兩個大目錄的最佳方法?

[混合溶液]

  1. 執行在兩個目錄一個的 「ls -R> different_files」[1]
  2. 「那麼sdiff <(回波的file1 | md5deep)<(回波file2的| md5deep )「[2]

您怎麼看?有什麼缺點?

[1]感謝Paul Tomblin [2]非常感謝所有的回報者!

+0

你期望得到什麼結果?即你如何比較2張照片? – Drakosha 2009-03-03 15:09:46

+0

你嘗試過'diff -r'嗎?這個編程如何相關? – 2009-03-03 15:10:01

+0

@David Segonds我對算法感興趣。我留下了這個問題,因爲我有一種感覺,任務的某些部分有準備好的工具。謝謝你的評論! – 2009-03-03 15:18:43

回答

2

如何比較2個文件夾,而不預先存在的命令/產品:

只需創建掃描每個目錄下,並創建每個文件的文件哈希的程序。它輸出一個包含每個相關文件路徑和文件哈希的文件。

在這兩個文件夾上運行該程序。

然後,您只需比較2個輸出文件,看看它們是否相同。要比較這兩個文件,只需將它們加載到一個字符串中並進行字符串比較。

您使用的哈希算法無關緊要。您可以使用MD5,SHA,CRC,... 您也可以使用輸出文件中的文件大小來幫助減少衝突的可能性。

如何比較2個文件夾與預先存在的命令/產品:

現在,如果你只是想一個程序,這樣做,用diff -rwindiff基於Windows的系統。

1

你只是想要發現哪些文件不在另一個文件中,反之亦然?幾點建議:

  1. 在兩個目錄中執行「ls -R」,重定向到文件,並區分文件。

  2. 在它們之間做一個「rsync -n」來查看哪些rsync必須複製(如果允許複製)。(-n表示不這樣做rsync的,只是告訴你,如果你運行它沒有-n它會做)

1

我會diff ING通過比較md5sum * | sort

的輸出會帶你到不同/丟失的文件

2

使用md5deep創建這些目錄中每個文件的遞歸md5sum列表。

您可以使用diff工具來比較生成的列表。

0

我知道這個問題已經得到解答,但是如果你不是自己編寫這樣一個工具,那麼在源碼基礎上有一個名爲tardiff的工作良好的開源項目,它基本上完全符合你的需求,甚至支持補丁的自動創建(顯然是tar格式)來解決差異。

希望這有助於

6

使用fslint:website。該工具的一個選項是「重複」。根據網站的描述: FSlint最常用的功能之一是能夠查找重複文件。從硬盤中刪除lint最簡單的方法是丟棄任何可能存在的重複文件。計算機用戶通常可能不知道他們的音樂集合中具有完全相同的歌曲的四個,五個或更多副本以不同的名稱或目錄。任何文件類型,無論是音樂,照片還是工作文檔都可以輕鬆地在計算機上覆制和複製。隨着重複收集,他們吃掉了可用的硬盤空間。 FSlint提供的第一個菜單選項允許您查找和刪除這些重複的文件。