Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

重複ファイルチェッカー

フォルダの中の重複ファイルをチェックしたいなーと思って、ちょろっと書いてみた。

# -*- coding: cp932 -*-
# md5checker.py

import sys, os, re, md5

path = sys.argv[1]
pat = re.compile(".(" + "|".join(sys.argv[2:]) + ")$")
d = os.listdir(path)
files = [os.path.join(path, f) for f in d if pat.search(f)]
md5hashes = [md5.new(open(f, "rb").read()).hexdigest() for f in files]

dic = {}
for f, m in zip(files, md5hashes):
    if dic.has_key(m):
        print "%sと%sは同じファイルです。\n(md5:%s)" % (dic[m], f, m)
    else:
        dic[m] = f

使い方はこんな感じ↓

md5checker.py [フォルダへのパス] [拡張子] [拡張子] ...

結果はこんな感じで出力されます。

kenkiti@X32M8J ~/wk$ python md5checker.py . txt py cpp
knapsack.pyとtest.txtは同じファイルです。
(md5:644d42064ba5f7b4f775f5d989c1d67a)