Skip to content

Instantly share code, notes, and snippets.

@mwermuth
Created March 16, 2014 08:59
Show Gist options
  • Save mwermuth/9580400 to your computer and use it in GitHub Desktop.
Save mwermuth/9580400 to your computer and use it in GitHub Desktop.
Find duplicate Files and delete all except one
require 'digest/md5'
hash = {}
Dir.glob("**/*").each do |filename|
next if File.directory?(filename)
key = Digest::MD5.hexdigest(IO.read(filename)).to_sym
if hash.has_key? key
hash[key].push filename
else
hash[key] = [filename]
end
end
hash.each_value do |filename_array|
if filename_array.length > 1
filename_array.each_with_index do |filename, i|
if i > 0
puts "=== Deleted Identical File ===\n"
File.delete(filename)
else
puts "=== Original ===\n"
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment