Windowsコンピューターに、さまざまなサブフォルダーにさまざまなファイル名で重複する画像ファイルがたくさんあります。
重複を削除するために、どのPythonスクリプトまたはフリーウェアプログラムをお勧めしますか?
(私は this 同様の質問を読みましたが、そこにあるポスターは、ファイルサイズが異なる視覚的な複製について質問しています。私のものはファイル名が異なる正確な複製です。)
MD5の合計に依存しないでください。
MD5の合計は、重複をチェックするための信頼できる方法ではなく、違いをチェックするための唯一の方法です。
MD5を使用して可能性のある候補の重複を見つけ、次にMD5を共有する各ペアについて
重複したIDをファイルするためにナイーブなアプローチをしている人々に私が反対票を投じているのを見て、ハッシュアルゴリズムに完全に依存する場合は、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がインストールされたUNIX(Linuxを含む)OSまたはWindowsのようなワンライナーです。
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の主要な宝くじに当選する可能性が高くなります)。
重複を削除するのではなく、すべての重複を表示したい場合は、unlink $file
の部分をprint $file, "\n"
に変更してください。
Windowsで重複する画像を削除するには、 DupliFinder。 を見てください。名前、サイズ、実際の画像情報など、さまざまな基準で画像を比較できます。
重複ファイルを削除する他のツールについては、このLifehackerをご覧ください 記事
1つのオプションは Dupkiller です。
DupKillerは、コンピューター上の重複ファイルまたは類似ファイルを検索および削除するための最速かつ最も強力なツールの1つです。検索メカニズムに組み込まれている複雑なアルゴリズムは、高い結果を実行します—迅速なファイル検索。多くのオプションにより、検索を柔軟にカスタマイズできます。
DupliFinderの代わりに、フォークされたプロジェクトを試してください DeadRinger 。元のプロジェクトの多数のバグを修正し、多数の新機能を追加し、パフォーマンスを劇的に改善しました。