class FindDuplicates::Groups

Public Class Methods

new() click to toggle source
# File lib/find-duplicates.rb, line 30
def initialize
  @hashes = {}    
end

Public Instance Methods

add(path) click to toggle source
# File lib/find-duplicates.rb, line 33
def add(path)
  md5 = Digest::MD5.new
  begin
    File.open(path, 'rb') do |file_h|
      file_h.each(8192) do |block|
        md5.update block
      end
    end
  rescue
    $stderr.puts "problem: #{ $! }"
    return
  end
  digest = md5.digest
  if @hashes.key?(digest)
    @hashes[digest] << path
  else
    @hashes[digest] = [ path ]
  end
end
duplicates() click to toggle source
# File lib/find-duplicates.rb, line 52
def duplicates
  @hashes.find_all { |k,v| v.size > 1 }    
end