2011-03-11 48 views
0

清理重複的文件,我已經有了一個Windows XP計算機存儲一些備份日誌文件如下:腳本基於文件大小

1.txt 
2.txt 
3.txt 
4.txt 
5.txt 

他們都有將文件從1-3有相同的文件大小和2 -5具有相同的文件大小。我想從每個具有相同文件大小的集合中存儲其中的一個,並刪除剩下的部分。有人可以建議一個腳本來做到這一點?

+2

如果你有很多文件,按大小進行比較可能不是一個好主意。你必須小心[生日悖論](http://en.wikipedia.org/wiki/Birthday_problem)。 – Tmdean 2011-03-11 05:29:33

+0

我有一百萬個日誌文件,順序更新了編號的時間戳,但有些文件相同。什麼是維護每個日誌文件只有一個副本的好方法? – iceman 2011-03-14 05:35:27

回答

3

的從File::Find::Duplicates(稍作改動)工作例子可能是一個良好的開端:

use File::Find::Duplicates; 

my @dupes = find_duplicate_files('/tmp/dup'); 

foreach my $dupeset (@dupes) { 
    printf "Files %s (of size %d) hash to %s\n", 
    join(", ", @{$dupeset->files}), $dupeset->size, $dupeset->md5; 
} 

File::Find::Duplicates大小和MD5校驗,這可能是你想要的比賽。

相關問題