ハッシュによるOSXでのファイルの重複の検索


13

OSX(Maverick、より一般的にはOSX)で確定ファイルを検索する方法を探しています。特に、次の
ことをしたいと思います。File_001が与えられた場合、ファイルシステムにこのファイルのコピーが存在するかどうかを検索したいと思います。
同じ名前だけでなく、比較方法をMD5、SHAなどのハッシュアルゴリズムにしたいと思います。

ドライブ/システム内のすべての重複を検索しようとした「重複ファイルファインダー」のほとんど。代わりに、1つのファイルを送信してその重複を検索することに興味があります。

そのようなプログラムが存在するかどうかは誰にもわかりますか?たぶんSpotlightのいくつかのあいまいな機能?


1
特定のファイルがコピーかどうかを判断するハッシュには注意してください。たとえば、このアプローチは.emlxファイル(Apple Mailのファイル形式)で失敗する場合があります。Spotlightの補助として、OSXはメタデータをメールファイルに追加します。Message-idが同じであっても、2つの異なるパスにある同じ電子メールのメタデータが異なる場合があります。まったく同じ生の電子メールを含む2つのファイルの異なるハッシュ。
ジョンD.

回答:


13

を使用することもできますfdupes。特定のファイルの重複を検索するオプションはありませんが、ファイル名の出力をgrepするだけです。

fdupes -r1 .|grep filename

-rディレクトリに再帰し-1、重複ファイルの各グループを1行に出力します。

その他の便利な例:

fdupes -r . 現在のディレクトリの下にあるすべての重複ファイルを見つけます。

fdupes -r . -dN 重複の各グループから最初の重複を除くすべてを削除します。

fdupes -r dir1 dir2|grep dir1/|xargs rmの重複を削除しdir1ます。

あなたは、インストールすることができますfdupesbrew install fdupes


7

いくつかのシェルコマンドを使用して、これを自分で簡単に構築できます。

  • find ~ -type f -exec md5 -r '{}' \; > /tmp/md5.list

    すべてのファイルに対してmd5ハッシュのリストを作成します。

  • grep $(md5 -q FILE-TO-SEARCH) /tmp/md5.list

    FILE-TO-SEARCHのmd5ハッシュを検索します

ただし、最初のコマンドの実行(特にディスク全体で実行する場合)には時間がかかります。


1つのファイルのみを検索したい場合は、次を使用することもできます。

SIZE=$(stat -f '%z' FILE-TO-SEARCH)
MD5=$(md5 -q FILE-TO-SEARCH)
find ~ -type f -size ${SIZE}c | while read f; do
    [[ $MD5 = $(md5 -q "$f") ]] && echo $f
done

最初のパスは、正確なサイズの操作で検索する必要があります。
biziclop

@biziclop 1つのファイルのみを検索する場合は、はい。複数を検索する場合は、インデックスを1回作成してから、インデックスファイル全体を検索する方が高速です。
nohillsideの

1
もちろん、私は質問のこの文に気付きました。「代わりに、1つのファイルを送信してその重複を検索することに興味があります。」
biziclop 14年

1

これは、FILE_001のサイズとハッシュをコマンドに置き換えた場合に機能するはずです。

198452バイトは使用したファイルサイズで、md5ハッシュファイルは3915dc84b4f464d0d550113287c8273bです。

find . -type f -size 198452c -exec md5 -r {} \; |
    grep -o "3915dc84b4f464d0d550113287c8273b\ \(.*\)" | awk '{print $2}'

出力は、findコマンドに送信されたディレクトリに相対的なパス名を持つファイルのリストになります。

このアプローチには、元のサイズに一致するファイルのみをハッシュし、ハッシュに一致するファイル名のみを出力するという利点があります。


0

スクリプトをいじりたくない場合は、Mac App StoreAraxis Find Duplicate Files $ 10を使用して、目的の動作に近づけることができます。Webサイトには7日間のデモもあります。Find Duplicate Filesは、各ファイルのハッシュを計算することにより、重複を検索します。

関心のある単一のファイルを使用してフォルダーを設定する場合の動作を概算し、検索するフォルダーを追加します。これにより、検索パスに他の重複がある場合はそれも報告されます。

このアプリには多くの素晴らしいソート機能があり、結果を非常に理解しやすくしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.