如何檢查資料夾 A 中的每個檔案是否存在於資料夾 B 中?

如何檢查資料夾 A 中的每個檔案是否存在於資料夾 B 中?

我正在重新組織硬碟上的一些文件,並且有一個資料夾的舊副本,我想要做的是確保資料夾A(舊副本)中的每個文件都存在於資料夾B 中。至少包含200 個文件,其中大部分可能是重複的。

警告:我不能只檢查文件名,我還必須確保它們具有相同的內容(à la fdupes)。

我檢查了線上幫助頁fdupes是否有某種方法可以進行逆運算(即找出哪些文件有任何副本)但空手而歸,即使該功能存在,我仍然擁有僅存在於資料夾 B 中的檔案。

這兩個問題很相似,但僅限於 Windows,所以沒有太大幫助:

提前致謝。

答案1

如果您已經有重複文件的列表,只需將其與所有文件的列表進行比較即可找到單個文件:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
  • -w只計算整個單字(不是子字串,因此檔案abcd不會被 匹配abc
  • -F認為模式是文字,而不是正規表示式
  • -f使用指定的檔案(-在本例中,即標準輸入)作為要符合的表達式清單。
  • -v您可能知道,顯示不符合的行。

這應該會輸出一個包含僅在其中一個資料夾中找到的檔案的列表,透過瀏覽或 grep 來尋找資料夾 A 的名稱(下面稱為dir1),應該很容易驗證它們是否都在資料夾B 中,如下所示:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f) | grep -F dir1

相關內容