2012-03-01 12 views
1

これはPythonのコード競争で出現した質問であり、これがどのように達成されるのか不思議でした。Pythonを使用して重複ファイルを検索する

問題の声明:

あなたが(それで可能なサブディレクトリとの)2つのディレクトリを持っています。 FAIL:少なくとも1つの同じファイル名の内容は

PASS異なる場合:それ以外の場合は

をここだスクリプトが同じファイル名の内容を2つのルートディレクトリに

の検索結果を比較することにより、重複したファイルを見つける必要がありますサンプル図

/dir1      /dir2 
     -- file1     -- file1 
     -- file2     -- fileA 
     -- file3     -- fileB 
     -- .... 
     -- ... 
     ---/subDir1 
      --file1 
      --file2 

file1 of dir1 contains :- foo bar 
file1 of dir2 contains :- foo 
Result - Fail 

file1 of dir1 contains :- foo bar 
file1 of dir2 contains :- foo bar 
Result - Pass. 

は、私は、ファイルのサイズによってハッシュを使用しようとしましたが、それは明らかではない方法でした:)

PS:任意のスクリプト言語を使用できます。

おかげ ケリー

+1

私は方法を説明しようとしていましたが、完全なプログラムhttp://www.ssokolow.com/scripts/fastdupes.pyにあなたを紹介する方が良いと思います(私はそれを書いていませんでしたが、それを見てみると、それがどのように動作するかを説明しようとするよりも良いでしょう。 –

答えて

3

あなたは階層的にこの問題を解決することができます。

  1. 各dir/subdirを調べ、ファイルのサイズを比較します。
  2. ファイルサイズが異なる場合はSHA1は試合をハッシュした場合はそれが一致していない=>
  3. を失敗した場合=>
  4. 計算に各ファイルのSHA1ハッシュを失敗し、ファイル内のコンテンツ のバイト比較ですでバイトをやります絶対に確信している。
+0

擬似コードを入力してください。私はここに与えられた投稿をフォローしていますが、結果を得ることができませんhttp://code.activestate.com/recipes/362459-dupinator-detect-and-delete-duplicate-files/ – Kelly

1

標準ライブラリのfilecmp moduleをご覧ください。

コンピューティングハッシュは、各ファイルを1つの他のファイルと比較するときには役に立ちません。ハッシュを計算するためにファイル全体を読み取ってから、一致を確認するために再度読み取る必要があります。対照的に、最初の違いで直接比較を中断することができます。

関連する問題