Skip to content

Instantly share code, notes, and snippets.

@vertis
Created January 23, 2011 13:20
Show Gist options
  • Select an option

  • Save vertis/792076 to your computer and use it in GitHub Desktop.

Select an option

Save vertis/792076 to your computer and use it in GitHub Desktop.
require 'pathname'
class Pathname
def hashes
children.map do |entry|
if entry.directory?
sha1 = [Digest::SHA1.hexdigest(entry.hashes.sort.join("")), entry]
else
sha1 = [Digest::SHA1.hexdigest(entry.read), entry]
end
sha1
end
end
def directories
results = []
children.map do |entry|
if entry.directory?
results << entry.directories.map {|d| d}
results << entry
end
end
results.flatten
end
end
duplicates = []
dirs = Pathname.new(ARGV.first).directories
until dirs.empty?
dir = dirs.shift
dirs.each do |comp|
puts "diff -r #{dir} #{comp}"
result = `diff -r #{dir} #{comp}`
if result.empty?
duplicates << [dir, comp]
end
end
end
duplicates.each do |dupl|
puts dupl
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment