From: David Tran Date: 2005-08-04T06:57:44+09:00 Subject: Re: Comparing directory contents FILES_NAME = 'files.txt' # files.txt will content all files name OLD_FILES_NAME = 'old_files.txt' # backup for current files.txt def get_files( pathname ) result = [] pathname.children.each { |e| result << e.to_s result += get_files(e) if e.directory? } result end old_files = [] begin old_files = IO.readlines(FILES_NAME).map { |e| e.chomp } File.rename(FILES_NAME, OLD_FILES_NAME) rescue end new_files = get_files(Pathname.new(File.expand_path('.'))).sort open(FILES_NAME, 'w') { |f| new_files.each { |e| f.puts(e) } } extra = new_files - old_files removed = old_files - new_files if !extra.empty? puts "Extra files:" extra.each { |f| puts f } puts end if !removed.empty? puts "Removed files:" removed.each { |f| puts f } puts end if extra.empty? && removed.empty? puts "Identical." end