私のWindowsコンピューターには、サブフォルダーが異なり、ファイル名が異なる重複した画像ファイルがたくさんあります。
重複を削除するには、どのPythonスクリプトまたはフリーウェアプログラムをお勧めしますか?
(私はこの類似の質問を読みましたが、ポスターは異なるファイルサイズの視覚的な複製について尋ねています。私のものは異なるファイル名の正確な複製です。)
私のWindowsコンピューターには、サブフォルダーが異なり、ファイル名が異なる重複した画像ファイルがたくさんあります。
重複を削除するには、どのPythonスクリプトまたはフリーウェアプログラムをお勧めしますか?
(私はこの類似の質問を読みましたが、ポスターは異なるファイルサイズの視覚的な複製について尋ねています。私のものは異なるファイル名の正確な複製です。)
回答:
MD5の合計に依存しないでください。
MD5合計は、重複をチェックするための信頼できる方法ではなく、違いをチェックするための方法にすぎません。
MD5を使用して、可能な 重複候補を見つけ、MD5を共有する各ペアについて
アイデンティティを重複してファイルするためのナイーブなアプローチをしている人々に落胆しているのを見てください。ハッシュアルゴリズムに完全に依存する場合は、善のために、SHA256やSHA512などのより厳しいものを使用してください、少なくとも、より多くのビットをチェックすることで合理的な程度。MD5は衝突条件に対して非常に弱いです。
また、ここで「ファイルチェック」というタイトルのメーリングリストを読むことをお勧めします。http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
「MD5はすべてのファイルを一意に識別できる」と言うと、論理エラーが発生しています。
長さ40,000バイトから100,000,000,000バイトまでのさまざまな長さの値の範囲を考えると、その範囲で使用可能な組み合わせの総数は、MD5で表される値の可能な数を大きく超え、わずか128ビットの長さです。
2 ^ 128の組み合わせのみで2 ^ 100,000,000,000の組み合わせを表しますか?私はそうは思わない。
重複を取り除く最も単純な方法であり、最も速い方法は次のとおりです。
Fdupesはこれを行います。また、同じ基準を使用するソフトウェアを使用する必要があります。
これは、Cygwinがインストールされた(Linuxを含む)OSやWindowsのようなUnix上の1つのライナーです。
find . -type f -print0 | xargs -0 shasum | sort |
perl -ne '$sig=substr($_, 0, 40); $file=substr($_, 42); \
unlink $file if $sig eq $prev; $prev = $sig'
意図的に作成されたコリジョンがないことがわかっている場合は、md5sum(約50%高速)を使用できます(自然に発生するmd5コリジョンを1つ見つけるよりも、10の主要な宝くじに勝つチャンスがあります)。
あなたが持っているすべてのDupを表示したい場合、それらを削除する代わりに、単にそのunlink $file
部分をに変更してくださいprint $file, "\n"
。
Windowsで重複した画像を削除するには、DupliFinderをご覧ください。 名前、サイズ、実際の画像情報など、さまざまな基準で写真を比較できます。
代わりにDupliFinderの、代わりにフォークプロジェクトを試してみてくださいDeadRingerを。元のプロジェクトの多数のバグを修正し、多くの新機能を追加し、パフォーマンスを劇的に改善しました。