删除目录中重复的文件
发布时间:2020-12-17 04:08:26 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 require 'find'require 'digest/md5'uniqueFileTable = Hash.newsameFileTable = Hash.new#puts ARGV[0]directory = ARGV[0]#.encode("UTF-8")def hav
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 require 'find' require 'digest/md5' uniqueFileTable = Hash.new sameFileTable = Hash.new #puts ARGV[0] directory = ARGV[0]#.encode("UTF-8") def have_same?(table,file) size = File.size(file) if table.has_value?(size) then buf = Digest::MD5.hexdigest open(table.key(size),"rb"){|f| f.read} bufAnother = Digest::MD5.hexdigest open(file,"rb"){|f| f.read} if buf == bufAnother then return table.key(size) end end return nil end Find.find(directory) do |file| if File.file?(file) then originFile = have_same?(uniqueFileTable,file) if originFile != nil then sameFileTable[file] = originFile else uniqueFileTable[file] = File.size(file) end end end =begin puts "nuniqueFileTable:" uniqueFileTable.each do |fileName,size| puts "%s : %d" % [fileName,size] end =end if sameFileTable.length > 0 puts "nsameFileTable:" sameFileTable.each do |fileName,fileName2| puts "%s : %s" % [fileName,fileName2] end puts "Remove All #{sameFileTable.length} reduplicate Files?(y = yes to all,c = confirm,n = do nothing)" userInput = STDIN.gets.chomp if userInput == "y" sameFileTable.each_key do |fileName| File.delete(fileName) end elsif userInput == "c" puts "For each confirm : y = yes,a = all,n = no." userInputInner = "" sameFileTable.each_key do |fileName| if userInputInner == "a" File.delete(fileName) next end puts "Delete? #{fileName}" while true userInputInner = STDIN.gets.chomp if userInputInner == "y" || userInputInner == "a" File.delete(fileName) break elsif userInputInner == "n" break end end end end else puts "No Same File." end 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |