2015-11-23 33 views
0

我已經使用find命令並創建了一個名爲Duplicates.txt的文件,其中包含一堆圖像的md5sums。從文本文件中選擇md5sums並刪除Linux中的重複項

我該如何去查找文件中的重複md5,然後使用它們從存檔中刪除重複項?

編輯:我不能使用fdupes。

+0

'md5sum [文件名] | awk'x [$ 1] ++''給出了重複列表(但每個重複列表的第一次出現都被排除在外)。 – 4ae1e1

+0

另一種方法是使用掃描目錄並找到重複文件(如'fdupes')的程序 - 這裏有一個大列表(https://askubuntu.com/questions/3865/how-to-find-和刪除重複文件)的替代品,如果你需要它們。 – Wilf

+0

檢查'fdupes'程序。 –

回答

0
sort Duplicates.txt|uniq -c|grep -v '^ *1 ' 
+0

對不起,這不起作用......他們會有不同的文件名。 – Chad

0

假設你在類似這樣的方式進行文件Duplicates

find ./dupimgs -type f -print0 | xargs -0 sha1sum > dupes.txt 

然後,你可以很容易地提取與這一個班輪獨特的文件:

sort dupes.txt | uniq --check-chars=40 --count | cut -d' ' -f 10 

這些是你想要保留的文件。我建議在另一個目錄中移動它們,然後刪除,現在是完全拷貝的目錄:

sort dupes.txt | uniq --check-chars=40 --count | cut -d' ' -f 10 | xargs -I {} mv {} ./originals 
rm -rf ./dupimgs 

備註:我以前sha1sum而非md5sum。這意味着摘要的長度會有所不同。對於sha1sum它是40個字符。對於md5sum,it's 32 hexadecimal digits。因此,您需要在上述命令中更改40以匹配您使用的哈希函數返回的十六進制字符串的長度。

0

fslint的重複搜索引擎腳本「findup」後面有一些令人印象深刻的bash-fu;您感興趣的是185線。

我通常會插入rmlint的插頭,但它看起來像是在尋找純粹的bash解決方案。

相關問題