web-dev-qa-db-ja.com

コンピュータから重複する画像ファイルを削除するための最良の方法は何ですか?

Windowsコンピューターに、さまざまなサブフォルダーにさまざまなファイル名で重複する画像ファイルがたくさんあります。

重複を削除するために、どのPythonスクリプトまたはフリーウェアプログラムをお勧めしますか?

(私は this 同様の質問を読みましたが、そこにあるポスターは、ファイルサイズが異なる視覚的な複製について質問しています。私のものはファイル名が異なる正確な複製です。)

14
BioGeek

MD5の合計に依存しないでください。

MD5の合計は、重複をチェックするための信頼できる方法ではなく、違いをチェックするための唯一の方法です。

MD5を使用して可能性のある候補の重複を見つけ、次にMD5を共有する各ペアについて

  1. 両方のファイルを開きます
  2. 1つが異なるまで、それらのファイルを転送します。

重複した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の組み合わせを表しますか?そんなことはないと思います。

ナイーブな方法

重複を取り除くための最も単純な方法、および最も速い方法は次のとおりです。

  1. サイズ別:サイズの異なるファイルを同一にすることはできません。ファイルを開く必要がないため、これにはほとんど時間がかかりません。
  2. MD5による:MD5/Sha値が異なるファイルを同一にすることはできません。ファイル内のすべてのバイトを読み取って計算を実行する必要があるため、これには少し時間がかかりますが、多重比較がより高速になります。
  3. 上記の違いに失敗する:ファイルのバイトごとの比較を実行します。これは実行に時間がかかるテストであるため、他のすべての除去要因が考慮されるまでテストが残されます。

Fdupes これを行います。また、同じ基準を使用するソフトウェアを使用する必要があります。

17
Kent Fredric

これは、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"に変更してください。

10
obecalp

私はUnixシステムでfdupes(Cで書かれた)とfreedups(Perl)を使用しましたが、これらはWindowsでも機能する可能性があります。 Windowsで動作すると主張されている 類似のもの もあります:dupmergeliten (Pythonで書かれています)など。

6
ShreevatsaR

Windowsで重複する画像を削除するには、 DupliFinder。 を見てください。名前、サイズ、実際の画像情報など、さまざまな基準で画像を比較できます。

重複ファイルを削除する他のツールについては、このLifehackerをご覧ください 記事

2
Sean

1つのオプションは Dupkiller です。

DupKillerは、コンピューター上の重複ファイルまたは類似ファイルを検索および削除するための最速かつ最も強力なツールの1つです。検索メカニズムに組み込まれている複雑なアルゴリズムは、高い結果を実行します—迅速なファイル検索。多くのオプションにより、検索を柔軟にカスタマイズできます。

enter image description here

1
jhamu

DupliFinderの代わりに、フォークされたプロジェクトを試してください DeadRinger 。元のプロジェクトの多数のバグを修正し、多数の新機能を追加し、パフォーマンスを劇的に改善しました。

1
kidjan