#!ruby -Ks # -*- mode: ruby; coding: sjis -*- # Last updated: <2016/09/26 02:10:06 +0900> # # dircmp_double.pl の移植。 # # 2つのディレクトリパスを渡して、サブディレクトリ名を取得後、比較。 # 同じディレクトリ名が存在したらリストアップする。 # # usage : ruby $0 dir1 dir2 # # 2016/09/26 v 0.01 記述 require "io/console" $dbg = false def usage puts "usage : ruby #{File.basename(__FILE__)} dir1 dir2" puts " 2つのディレクトリパスを渡して、サブディレクトリ名を取得後に比較。" puts " 同じディレクトリ名が存在したらリストアップする。" push_any_key end def push_any_key puts "\nPush Any Key" STDIN.getch exit end def get_filelist(path) puts "Search [#{path}]" flist = [] Dir::entries(path).each do |f| next if f =~ /^\.{1,2}$/ dirpath = path + "\\" + f if FileTest.directory?(dirpath) puts "[Dir] #{f}" if $dbg flist.push(f) elsif FileTest.file?(dirpath) puts "[File] #{f}" if $dbg else puts "[Unknown] #{f}" end end puts " ... #{flist.length}" return flist end if ARGV.length != 2 puts "引数の数が違います。" ARGV.each do |s| puts "[#{s}]" end usage end dirs = [] ARGV.each do |f| if FileTest.directory?(f) puts "[BaseDir] #{f}" if $dbg dirs.push(f) else puts "#{f} はディレクトリではありません" usage end end a = get_filelist(dirs[0]) b = get_filelist(dirs[1]) duplist = [] a.each do |sa| b.each do |sb| duplist.push(sa) if sa == sb end end puts if duplist.length == 0 puts "重複ディレクトリ名は見つかりませんでした。" else puts "重複ディレクトリ名 : " puts '-' * 40 duplist.sort.each do |s| puts " #{s}" end end push_any_key