program som tar bort dubletter.

Permalänk

program som tar bort dubletter.

finns det något program som tar bort dubletter av filer ?
Jag har så många mp3 dubletter som måste bort.

Visa signatur

[X2 4200+@2700mhz][X1900XTX][580W Type-R][Lexa][OCZ Golden 2048 Mb][a8r-mvp]
Canon 30D - Canon 50/1:1.8 II - Canon 70-200/4.0 L

Permalänk
Medlem

Låter som ett jobb för ett fult bash-script
Är filerna exakt lika (dvs kopior) eller har de bara samma namn?

Visa signatur

Hur man installerar program i *nix | There is no Swedish conspiracy

these days you can't use the Web at 2400 baud because the ads are 24KB - Bill Joy

Permalänk
Citat:

Ursprungligen inskrivet av Lunke
Låter som ett jobb för ett fult bash-script
Är filerna exakt lika (dvs kopior) eller har de bara samma namn?

Jag skulle behöva nått som klarade både och.

Visa signatur

[X2 4200+@2700mhz][X1900XTX][580W Type-R][Lexa][OCZ Golden 2048 Mb][a8r-mvp]
Canon 30D - Canon 50/1:1.8 II - Canon 70-200/4.0 L

Permalänk
Medlem

Freshmeat has it:
http://freshmeat.net/search/?q=duplicate&section=projects&Go....

Verkar mest intressant: http://freshmeat.net/projects/dump3/

Har inte testat något av dom dock.

Permalänk

Ojj, dedär va jobbigt. Vill gärna bara ha nått progam som bara går att installera på en gång.

Visa signatur

[X2 4200+@2700mhz][X1900XTX][580W Type-R][Lexa][OCZ Golden 2048 Mb][a8r-mvp]
Canon 30D - Canon 50/1:1.8 II - Canon 70-200/4.0 L

Permalänk
Medlem

Kan skriva ett script åt dig
Hur ligger filerna sorterade?

Vill du ha alltså att den ska kolla igenom en mapp, hitta filer som är identiska till innehållet och radera dom, samt rekursivt besöka mappar och radera filer med samma namn?

edit:
Here you go

http://pici.se/stuff/doublermv

#!/usr/bin/python """Takes an argument and removes all identical files in that folder and its subfolders""" import os, sys try: folder = sys.argv[1] except: print "Program needs a folder as an argument" sys.exit(1) hashes = [] names = [] doubles = [] namedoubles = [] walker = os.walk(folder) for (folder, folders, files) in walker: for f in files: if folder.endswith("/"): folder=folder[:-1] fullpath = folder+"/"+f thishash = hash(open(fullpath,"r").read()) print "hashed:",fullpath,thishash if thishash in hashes: doubles.append(fullpath) print fullpath,"is a double (content)" else: hashes.append(thishash) if f in names: namedoubles.append(fullpath) print f,"is a double (filename)" else: names.append(f) if not (doubles or namedoubles): print "No doubles!" else: if doubles: print "------------------" print "The following files has been found as identical:" for double in doubles: print double if namedoubles: print "------------------" print "The following filenames has been found as identical:" for double in namedoubles: print double print "------------------" answer = "" while not answer in ["y","n"]: print "Remove all copies (y/n)?" answer = sys.stdin.readline().strip() if answer == "y": for f in doubles+namedoubles: print "Removing",f os.remove(f) print "Done!" else: print "OK! No file removed"

Ladda ner och kör genom att göra det till en körbar fil och sen köra det

chmod +x doublermv
./doublermv /path/to/stuff/to/remove

Du kommer bli frågad om du vill radera filerna innan något ändras.

Permalänk

jepp det stämmer det du sa, jag vill tex söka igenom hela Min musik.

Visa signatur

[X2 4200+@2700mhz][X1900XTX][580W Type-R][Lexa][OCZ Golden 2048 Mb][a8r-mvp]
Canon 30D - Canon 50/1:1.8 II - Canon 70-200/4.0 L

Permalänk
Medlem

Min musik? :/
Lät väldigt windows, så du är nog i fel forumdel.

Jag uppdaterade min förra post med ett script som funkar flawless i linux iaf.
Borde funka i windows också om man ändrar "/" till "\\" där det används som delimiter

dvs

if folder.endswith("/"): folder=folder[:-1] fullpath = folder+"/"+f

till

if folder.endswith("\\"): folder=folder[:-1] fullpath = folder+"\\"+f

Har tyvärr ingen windowsmaskin att testa på just nu.
Det där testet används för att klara av både anrop som /home/user/buffi/ och /home/user/buffi

Permalänk

tack

Visa signatur

[X2 4200+@2700mhz][X1900XTX][580W Type-R][Lexa][OCZ Golden 2048 Mb][a8r-mvp]
Canon 30D - Canon 50/1:1.8 II - Canon 70-200/4.0 L

Permalänk
Medlem

Lugnt, behövde friska upp minnet hur os.walk funkar ändå

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Buffi
Lugnt, behövde friska upp minnet hur os.walk funkar ändå

funkade inte så bra du.. när jag körde det i min /tmp
Traceback (most recent call last):
File "./doublermv", line 21, in ?
thishash = hash(open(fullpath,"r").read())
IOError: [Errno 6] No such device or address: '/tmp/conftest487'

edit:
jo.. är det inte bättre att kolla om det är samma storlek först på filerna sedan jömnföra hashen på filerna om det är samma? bara kolla hash tar lååång tid på en stor katalog med massa bilder.

Visa signatur
Permalänk
Medlem

Vad är conftest487 för fil?
Har du permission att läsa den annars?

Funkar programmet i andra mappar för dig?

Permalänk
Medlem

hahah.. jo jag har rättigheter att läsa den.. testa nu att köra en cat så får jag samma problem. så det var inge fel på ditt script

Visa signatur
Permalänk
Medlem

Dåså
Sen är det såklart inte hårdoptimerat, men ptja... det funkar relativt bra för ett litet script jag bara kastade ihop för att vara hjälpsam iaf.

Angående
"jo.. är det inte bättre att kolla om det är samma storlek först på filerna sedan jömnföra hashen på filerna om det är samma? bara kolla hash tar lååång tid på en stor katalog med massa bilder."

Ska testa att hasha alla bilder på pici för att se hur lång tid det tar så man har någon aning.

edit: 2.9gb bilder på pici
Att hasha alla bilder tar 64.38 sekunder på min server.
Nog snabbt enligt mig

Permalänk
Medlem

hur lång tid skulle det ta om du gör som jag sa då?

Visa signatur
Permalänk
Medlem

Osäker på om python har någon funktion för att direkt bestämma filnamnen på en fil. Det finns ju iofs sätt att kolla i filers header... kan kika lite men måste dra till jobbet snart.

edit:
os.stat(fileobject).st_size
tar filstorlek ur headern tydligen

Naturligtvis så går det väldigt mycket snabbare (<1 sekund för alla bilder)... men hur kul är det?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Buffi
if folder.endswith("/"): folder=folder[:-1]
fullpath = folder+"/"+f

os.path.join(folder,f) så slipper du kolla efter "/", dessutom fixar join så att det blir rätt i windows också

Permalänk
Medlem

Nice, tack för tipset

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Buffi
Osäker på om python har någon funktion för att direkt bestämma filnamnen på en fil. Det finns ju iofs sätt att kolla i filers header... kan kika lite men måste dra till jobbet snart.

edit:
os.stat(fileobject).st_size
tar filstorlek ur headern tydligen

Naturligtvis så går det väldigt mycket snabbare (<1 sekund för alla bilder)... men hur kul är det?

det kan vara rätt så kul om man ska kolla stora filer. men när det är mindre så kvittar det.

Visa signatur
Permalänk
Medlem

Menar alltså att den totala körtiden blev < 1 sekund för att kolla alla bilder, så det blev ju en rejäl ökning
Det första var ju dock endast en snabbgrej jag skrev ihop bara för att det skulle fungera.

Permalänk
Medlem

Jag har ett smidit program som heter "Double Killer"