ファイルシステム内のすべての重複ファイルを一覧表示するアルゴリズムの設計についてどう思いますか?私の最初の考えではハッシュを使用すると思っていましたが、もっと良い方法があるのだろうかと思っています。心に留めておくべき可能性のあるデザインのトレードオフは何ですか?ルートディレクトリが指定されているファイルシステム内のすべての重複ファイルをリストします。
2
A
答えて
2
すべてのファイルの内容を読み取る必要があるため、すべてのファイルをハッシュするには非常に時間がかかります。
私は、3ステップのアルゴリズムをお勧めします:
- がいる場合にのみ、あなたのディレクトリをスキャンし、パスファイルの&サイズ
- ハッシュ他のファイルと同じサイズを持つファイルのみを書き留め同じサイズのファイルが2つ以上あります。ファイルのサイズが他のファイルと同じであれば、ハッシングは必要なく、内容を1対1で比較するだけです(ハッシュ時間を節約します。後でハッシュ値が必要)
- ハッシュが同じであっても、バイト単位でファイルを比較する必要があります。なぜなら、haファイルのサイズが同じで、ファイルシステムが()のファイルシステムの場合、shは異なるファイルで同じになることがあります。
可能であれば、すべてのファイルを同時に開いて内容を比較することもできます。それは大きなファイルの複数の読み込みを節約します。データの種類に応じて時間を節約するために実装することができる調整がたくさんあります(例:2つの圧縮/ tarファイルが同じサイズ> x Ggigabytesのサイズ(および同じ名前)の場合、内容を読み込まないでくださいプロセスがあれば、ファイルは重複している可能性が非常に高いです)。
このようにして、システム内で一意のサイズのファイルをハッシュしないようにします。多くの時間を節約します。
注:名前は異なる可能性があるため、ここでは名前を考慮しません。
編集:私は研究のビット(遅すぎる)を行い、fdupes
あなたはUN * Xのようなシステムを使用している場合ことを正確に行うように見えることが判明しました:で見
関連する問題
- 1. 特定のエントリを変更している間に、すべてのファイルの内容が重複します。
- 2. WebクライアントでUrisのリストが指定されている場合、すべてのファイルがダウンロードされない
- 3. 私のプログラムは特定のリスト内のすべての重複数をカウントしませんが、他のすべてに対して有効です
- 4. すべての重複を返さないエラーサーチコレクション(重複)検索
- 5. GL_COLOR_BUFFER_BITマスクが指定されている場合、glBlitFramebufferはすべてのカラー添付ファイルをコピーしますか?
- 6. 一覧隠しフォルダ内のファイルを除き、指定されたディレクトリ内を再帰的にすべてのファイル
- 7. 指定されたディレクトリにゼロサイズのすべてのファイルを削除します
- 8. 指定された値のすべての並べ替えのリスト
- 9. 指定されたディレクトリ内のディレクトリパスを持つすべてのファイルを抽出します。
- 10. 重複する行がすべて削除される
- 11. リストのリスト内の指定された要素を削除します。
- 12. Django syncdb複数のデータベースが指定されているときに重複する行を挿入しようとしています
- 13. テンプレートクラスの「すべてのパラメータ化された型」または「すべての引数リスト」の指定方法
- 14. 指定されたディレクトリ内のすべてのバッチファイルを実行しています
- 15. SQLが重複して更新されています
- 16. ルートディレクトリのすべてのファイルを再帰的にマージする
- 17. 指定されたユーザーによって作成されたすべてのファイルを削除します
- 18. 指定されたパスは存在しません。すべてのファイルに
- 19. それらのリストだけでなく、重複しているすべてのレコードが
- 20. Flashのストリーミングオーディオが重複して複数回再生されています
- 21. 複数のスクリプトタグが重複して実行されますか?
- 22. Pythonでリストのリストで重複して下さい
- 23. 指定されたタイプのすべてのコントロールのデフォルトプロパティを設定します。
- 24. CoreData NSManagedSubClassファイルが重複ファイルを生成していますか?
- 25. pythonリスト重複する値を特定して代入する
- 26. 指定されたフィールドのリストを除くすべてのフィールドのログアウトフィルターremove_field
- 27. プロパティの内容が複数回設定されています
- 28. bash内のすべてのサブディレクトリ内のすべてのファイルのリストを作成
- 29. Ocamlは、指定されたすべての要素をリスト内の指定された要素に置き換えます。
- 30. ASP.Netコア1指定されたディレクトリにファイルをリストします
名前または内容によって重複していますか? –