我有一堆文件。我计算了它们的MD5哈希值,并将其放入文本文件中,并将其命名为database.txt我想根据文本文件中的MD5哈希删除这些文件的所有实例(而不仅仅是重复)。任何人都可以提供一些批处理代码或软件建议的帮助吗?
我找到的最接近的东西是https://stackoverflow.com/a/53861527/11980858,但它只删除重复项。
您可以修改以下代码,或者创建一个名为“文件”的文件夹,然后将所有文件移动到该文件夹。命名包含哈希值“ 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)