Guest User

Untitled

a guest
Apr 20th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require 'digest/md5'
  4. require 'find'
  5.  
  6. @hashfun = Digest::MD5.new
  7. @digests = {}
  8.  
  9. def digest filename
  10. @hashfun.hexdigest File.read(filename)
  11. end
  12.  
  13. def checkdup base, filename
  14. hash = digest filename
  15. filename.sub! base, '' if filename.index(base) == 0
  16. if @digests.has_key? hash
  17. old = @digests[hash].first
  18. old += " (plus #{@digests[hash].size - 1} others)" if @digests[hash].size > 1
  19. puts "#{filename} and #{old} are duplicates."
  20. @digests[hash] << filename
  21. else
  22. @digests[hash] = [filename]
  23. end
  24. end
  25.  
  26. bases = ARGV
  27. if bases.empty?
  28. print "Enter dir name to search: "
  29. bases << gets.chomp
  30. end
  31.  
  32. one_base = bases.size == 1
  33. bases.each do |base|
  34. Find.find base do |path|
  35. checkdup( (one_base ? base : ''), path) unless File.directory? path
  36. end
  37. end
Add Comment
Please, Sign In to add comment