Portál AbcLinuxu, 10. května 2025 05:51

Dotaz: Jak najit stejne soubory?

5.5.2006 08:28 Adam.J | skóre: 4
Jak najit stejne soubory?
Přečteno: 492×
Odpovědět | Admin
Dobry den, na ftp server se objevujou obcas stejne soubory, a tak jsem hledal najakou cestu jak je najit. Zatim jsem nic nenasel, hledal jsem tady v diskuzi, v man find, apt-cache search , ovsem nic, rekl bych ze spatne hledam. Napadla mne myslenka to v bashi naprogramovat porovnani kadeho souboru s kazdym, coz bude hodne neohrabane. Jak to mate vyresene Vy ?

Adam J.
Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.5.2006 09:02 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jojo, už se to tady někdy řešilo, ale teď nemůžu najít to vlákno. Našel jsem ale svůj prográmek na hledání duplicitních souborů, který jsem tehdy psal:
#!/usr/bin/env python
import os,md5

def CalcMD5(filename):
  buffersize = 1000000
  sum = md5.new()
  f = open(filename)
  while True:
    data = f.read(buffersize)
    if not data: break
    sum.update(data)
  f.close()
  return sum.hexdigest()


def removefile(name):
  print 'removing', name
# os.remove(name)

def removeduplicit(filelist):
  md5sums = {}
  for name in filelist:
    sum = CalcMD5(name)
    if not md5sums.has_key(sum):
      md5sums[sum] = name
      continue

    name1 = md5sums[sum]
    name2 = name
    print 'duplicit files: ', name1, name2
    if os.path.getctime(name1) > os.path.getctime(name2):
      removefile(name1)
      md5sums[sum] = name2
    else:
      removefile(name2)


path = '.'

sizes = {}
for root, dirs, files in os.walk(path):
  for file in files:
    name = os.path.join(root, file)
    if not os.path.isfile(name): continue
    size = os.path.getsize(name)
    if sizes.has_key(size):
      sizes[size].append(name)
    else:
      sizes[size] = [name]


for k in sizes.keys():
  if len(sizes[k]) > 1:
    removeduplicit(sizes[k])
Ten program najde v aktuálním adresáři všechny soubory se stejným obsahem (název se může lišit), ponechá jen ten nejnovější a ostatní smaže.
5.5.2006 09:04 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Bylo to tady.
5.5.2006 09:07 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, teď jsem jenom zkusmo napsal něco takového:
find ./ -type f -print0 | xargs -0 md5sum | sort | \
awk '{ if (md5 == $1) print cesta,$2; md5=$1; cesta=$2 }
Nestačilo by to?
5.5.2006 09:23 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Díky za ten odkaz, nechápu, jak jsi to dokázal najít. Psal jsem do vyhledávání kusy toho programu a různá slova z diskuse, ale stejně jsem nic nenašel.

Nerad bych zopakoval tu tehdejší bouřlivou debatu, jen podotýkám, že je lepší nejprve porovnat velikosti, a pak teprve spočítat md5.
5.5.2006 09:36 Adam.J | skóre: 4
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Predpokladam, ze fdupes by to mel takhle delat, ne ? no jak se divam tam 16000 souboru(cca 600G) to projede celkem rychle, takze asi jo :)
5.5.2006 09:38 Adam.J | skóre: 4
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
ups, 600G to bych kecal je to nej cca 80G
5.5.2006 14:18 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Asi jo. Já si to zkoušel jen na pár dokumentech, kde to byla rychlovka. :)
5.5.2006 17:38 miso | skóre: 36 | blog: iSCSI_initiator_howto | Praha
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Ten dotaz som vtedy polozil ja a uz som par krat lutoval, ze som vtedy este nebol registrovany a lahsie by som ho nasiel (ked som sa k tomu po case chcel znovu vratit)
Zatial stale pouzivam md5, ale dost to trva, nastastie sa mi este nestalo, zeby som potreboval vysledky hned.
Pri 60-80G by som naozaj doporucil porovnat najprv velkost
Project Satan infects Calculon with Werecar virus
5.5.2006 09:13 lucaash
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mě se osvědčilo fdupes.

Zdar,

Lucaash
5.5.2006 09:31 Adam.J | skóre: 4
Rozbalit Rozbalit vše Re: Jak najit stejne soubory?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Diky vsem, myslim, ze to vyhraje fdupes :) No jak se divam na manual tak to umi pracovat se soft/hard/linkami, a furu dalsich prepinacu, proste super programek :) presne takovy jaky jsem hledal.

PS: a je v debianu jako balicek :D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.