基于MD5哈希删除文件?

问题描述 投票:0回答:1

我有一堆文件。我计算了它们的MD5哈希值,并将其放入文本文件中,并将其命名为database.txt我想根据文本文件中的MD5哈希删除这些文件的所有实例(而不仅仅是重复)。任何人都可以提供一些批处理代码或软件建议的帮助吗?

我找到的最接近的东西是https://stackoverflow.com/a/53861527/11980858,但它只删除重复项。

md5
1个回答
0
投票

您可以修改以下代码,或者创建一个名为“文件”的文件夹,然后将所有文件移动到该文件夹​​。命名包含哈希值“ hashes.txt”的文件,然后将其放在文件文件夹上方,与以下脚本相同

脚本将查找具有相同哈希值的文件并将其全部删除。

import collections
import hashlib
import os

#read the hashes and put them in a list
with open('./hashes.txt','r') as hf:
    hashlist = hf.read().splitlines()

#duplicate hashes
duplicates = [item for item, count in collections.Counter(hashlist).items() if count > 1]

#md5 function
def md5(fname):
    hash_md5 = hashlib.md5()
    with open(fname, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest() 


#read your files, calculate their hash and if its in duplicate delete the file
files = os.listdir('./files')
for f in files:
    h = md5('./files/'+f)
    if h in duplicates:
        os.remove('./files/'+f)
© www.soinside.com 2019 - 2024. All rights reserved.