-
-
Save deathwishdave/17fbc7aceac1ad0667f3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ruby find_same_name_different_size.rb | |
find_same_name_different_size.rb:18:in `==': undefined method `key' for #<SharedFile:0x007fd54b091078> (NoMethodError) | |
from find_same_name_different_size.rb:23:in `eql?' | |
from find_same_name_different_size.rb:39:in `each' | |
from find_same_name_different_size.rb:39:in `group_by' | |
from find_same_name_different_size.rb:39:in `<main>' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'find' | |
require 'pathname' | |
require 'pp' | |
require 'digest/md5' | |
class SharedFile | |
attr_reader :file_name | |
attr_reader :file_size | |
def initialize(path, file_size) | |
#@path = path | |
@key = Digest::MD5.hexdigest(IO.read(path)).to_sym | |
@file_name = Pathname.new(path).basename.to_s | |
@file_size = file_size | |
end | |
def ==(other) | |
self.file_name == other.file_name && self.key != other.key | |
# self.file_name == other.file_name && self.file_size != other.file_size | |
end | |
def eql?(other) | |
self == other | |
end | |
def hash | |
[file_name].hash | |
end | |
end | |
files = [] | |
Dir.glob("**/*", File::FNM_DOTMATCH).each do |filename| | |
next if File.directory?(filename) | |
files << SharedFile.new(filename,File.size(filename)) | |
end | |
results = files.group_by{|i| i}.map{|k,v| [k, v.count] } | |
results.each do |result| | |
puts "#{result[0]} , #{result[1]}" | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment