计算重复文件

时间:2015-10-15 09:25:09

标签: python count duplicates

我是Python的新手,想要计算相同的60k文本文件中的内容,并列出所有不同的内容,其中有多少是相同的,如filter { if ([type] == "testbed"){ if [MessageParserJson][e[{}] in [MessageParserJson]{ mutate { remove_field => ["[MessageparserJson][e[{0}]]" , "[MessageparserJson][e[{1}]]" , "[MessageParserJson][e[{2}]]"] add_field => { "[MessageParserJson][e[{3}]]" => "MessageParser" } add_field => { "[MessageParserJson][e[{4}]]" => "MessageParser" } add_field => { "[MessageParserJson][e[{5}]]" => "MessageParser" } add_field => { "[MessageParserJson][e[{6}]]" => "MessageParser" } } } drop { remove_field => ["MessageParserJson"] } } } 但在文件上而不是行,等级。

到目前为止,我有:

uniq -c

1 个答案:

答案 0 :(得分:1)

我没有彻底测试过,但您可以使用Python的hashlib在每个文件上获取MD5哈希值,并将文件名存储在与字典中每个哈希相关联的list中。 / p>

然后,要获取包含它出现的文件数量的唯一内容,请迭代字典:

import os
import hashlib

mypath = 'testdup'
onlyfiles = [f for f in os.listdir(mypath)
                if os.path.isfile(os.path.join(mypath,f)) ]

files = {}
for filename in onlyfiles:
    filehash = hashlib.md5(open(os.path.join(mypath, filename), 'rb')
                              .read()).hexdigest()
    try:
        files[filehash].append(filename)
    except KeyError:
        files[filehash] = [filename]

for filehash, filenames in files.items():
    print('{0} files have this content:'.format(len(filenames)))
    print(open(os.path.join(mypath,filenames[0])).read())