4

特定のトピックに関連するファイルをインターネットからダウンロードしました。ここで、ファイルに重複があるかどうかを確認したいと思います。問題は、ファイルの名前が異なることですが、内容は一致する可能性があります。

複数のフォルダを反復処理し、どのファイルが重複しているかを通知するコードを実装する方法はありますか?

4

4 に答える 4

4

MD5フォルダーを再帰的にトラバースし、各ファイルの を見つけてから、重複するMD5値を探すことができます。これにより、重複したファイルのコンテンツが賢明になります。これをどの言語で実装しますか?

以下は、上記のことを行う Perl プログラムです。

use strict;
use File::Find;
use Digest::MD5 qw(md5);    

my @directories_to_search = ('a','e');
my %hash;

find(\&wanted, @directories_to_search);

sub wanted  {

        chdir $File::Find::dir;
        if( -f $_) {
                my $con = '';
                open F,"<",$_ or die;
                while(my $line = <F>) {
                        $con .= $line;
                }
                close F;
                if($hash{md5($con)}) {
                        print "Dup found: $File::Find::name and $hash{md5($con)}\n";
                } else {
                        $hash{md5($con)} = $File::Find::name;
                }
        }
}
于 2010-03-08T03:56:26.890 に答える
2

すべてのファイルを再帰的に検索し、サイズ、2 つ以上のファイルのバイト サイズで並べ替え、MD5 ハッシュまたは SHA1 ハッシュ計算を実行して、それらが実際に同一であるかどうかを確認します。

正規表現は、この問題には役立ちません。

ネット上にはたくさんのコード例がありますが、今はこのコードをノックアウトする時間がありません。(これはおそらくいくつかの反対票を引き出すでしょう-肩をすくめます!)

于 2010-03-08T03:56:50.260 に答える