
我正在重新組織硬碟上的一些文件,並且有一個資料夾的舊副本,我想要做的是確保資料夾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