よく同じファイルが別名で存在することがよくある!。プロジェクトのドキュメントを扱っていると、これがよくある。多人数になればなるほど、みんなが適当にバックアップ・コピー取って編集するので、同じファイルが大量に出てきて焦る。
写真も別名で出てくる定番ですね。
バックアップ的なものなバージョン管理でやればいいと思うのですが。重複ファイルが出てきてしまった以上仕方ない。重複ファイルを探して消して回るしか無い。
重複ファイルを探すスクリプト
ハードディスクの重複ファイルを探すスクリプト作った。
#!/usr/bin/env ruby ## ** coding:utf-8 # # dir_name = ARGV[0] if ARGV.size > 0 dirname ||="." dirname= File.expand_path(dirname) require 'tempfile' tmpfile = Tempfile.new("md5_sum") IO.popen("find '#{dirname}' -type f -exec md5sum {} \\; "){|f| until f.eof? str = f.readline tmpfile.puts str puts str end } tmpfile.close puts "--"*20 tmpfile.open #ソート #puts `sort #{tmpfile.path}` IO.popen("sort #{tmpfile.path}"){|f| until f.eof? str = f.readline tmpfile.puts str puts str end } puts "--"*20 tmpfile.close list = tmpfile.open.readlines.map{|e| e.split } hash_list = list.map{|e| e.first} puts hash_list puts "--"*20 dups = hash_list.uniq.select{|i| hash_list.index(i) != hash_list.rindex(i)} puts dups puts "--"*20 puts "重複一覧" puts "--"*20 list.select{|e| puts e.join("\t") if dups.select{|i| e.first =~ /#{i}/}.size>0 }
実行結果
---------------------------------------- 重複一覧 ---------------------------------------- b8641b41c4e8d81aaab2daf84898391d /Users/takuya/Desktop/構造体、共用体、列挙 2.txt b8641b41c4e8d81aaab2daf84898391d /Users/takuya/Desktop/構造体、共用体、列挙 3.txt b8641b41c4e8d81aaab2daf84898391d /Users/takuya/Desktop/構造体、共用体、列挙 4.txt b8641b41c4e8d81aaab2daf84898391d /Users/takuya/Desktop/構造体、共用体、列挙 5.txt b8641b41c4e8d81aaab2daf84898391d /Users/takuya/Desktop/構造体、共用体、列挙 6.txt b8641b41c4e8d81aaab2daf84898391d /Users/takuya/Desktop/構造体、共用体、列挙.txt
2018-08-03
記述ミスを修正