[Bda] fdyp

skaya@enix.org skaya@enix.org
Mon, 04 Nov 2002 15:05:45 +0100 (CET)


donc pour ceux qui veulent détecter les doublons dans leur
collec de mp3/divx/... et la comparer avec celle de leurs collègues,
vous pouvez commencer par un :

find /blabla -type f -print0 | xargs --null md5sum > fdyp.csc

attention c'est très long, voire très très long :-)

ensuite y a quelques lignes de python qui prennent 2 fichiers
CSC pour indiquer les fichiers qui existent dans l'un et pas
dans l'autre ; et je suis en train de plancher sur le calcul
incrémental des checksums (en fait c'est surtout la progress
bar qui me prend du temps, je sens que je vais la zapper) :-)

------8<------ fdyp.py prerelease --------------------
#!/usr/bin/python
class fdyp:
    def __init__(self):
        self.h={}
    def load(self,filename,callback=lambda md5sum,oldlist,new:None):
        f=open(filename)
        for l in f.readlines():
            md5,path=l.split(" ",1)
            oldlist=self.h.get(md5,[])
            callback(md5,oldlist,path)
            self.h[md5]=oldlist+[path]

import sys
def newcb(md5sum,oldlist,new):
    if not oldlist: print new
mylist,otherslist=sys.argv[1:3]
fi=fdyp()
fi.load(mylist)
fi.load(otherslist,newcb)