#!/usr/bin/env ruby
=begin
=  rename.rb
== USAGE:
rename.rb from to file [file...]

 $ rename.rb ECMWF NCEP ./*.nc

== Description:
$B$"$k$HJXMx$J%U%!%$%kL>JQ99;Y1g%D!<%k(B. from $B$G;XDj$7$?J8;zNs$r(B to $B$KCV49$9$k(B.
ruby $B$N@55,I=8=$,;H$($k(B. $B:n6H$KI,?\$H$$$&$o$1$G$O$J$$$,(B, $B7k9==EJu(B.

==COPYRIGHT 
created by daktu32 @ 2003-10-08
=end

#========================================================================#
#---------------------------   $BJQ?t@k8@(B   -------------------------------#
#------------------------------------------------------------------------#

from = ARGV[0]                           # $BCV$-49$($k85$NJ8;zNs(B
to   = ARGV[1]                           # $from $B$r$3$NJ8;z$KCV$-49$($k(B
path = Array.new()                       # $B%U%!%$%k$N%Q%9$r3JG<$9$kG[Ns(B

#========================================================================#
#---------------------   $B%*%W%7%g%s$N?t3NG'(B   ---------------------------#
#------------------------------------------------------------------------#

num = ARGV.size                           # $B0z?t$N?t$r<hF@(B
if num < 3 then                           # $B;XDj$7$?0z?t$,(B 2 $B$D0J2<$@$H%W%m%0%i%`=*N;(B.
  print "argument is not enough.\n"
  exit
end

#========================================================================#
#---------------------   $B%U%!%$%k%Q%9<hF@(B   -----------------------------#
#------------------------------------------------------------------------#

file = ARGV.slice(2..num-1)               # $B%U%!%$%kL>$N$_3JG<$5$l$k$O$:(B
                                          # $B%*%W%7%g%s$N%U%!%$%kItJ,$N$_$rG[Ns$K3JG<(B
file.each {|a|
  path << File.expand_path(a)            # $B;XDj$7$?%U%!%$%k$N%Q%9$r<hF@$7(B,$BG[Ns$K3JG<(B
}

#========================================================================#
#----------------   $BJ8;zNsCV$-49$((B $B$*$h$S(B $B>r7oH=CG(B  ---------------------#
#------------------------------------------------------------------------#

path.each  {|n| 
  Dir::glob(n).each {|file|               # n $B$G;XDj$7$?%Q%?!<%s$K%^%C%A$9$kA4$F$N%U%!%$%k$KBP$7$F=hM}$r9T$&(B.
    reg = Regexp.new(from)               # from $B$G;XDj$5$l$k@55,I=8=%*%V%8%'%/%H(B
    bn  = File.basename(file)             # $B%U%!%$%k$N4pK\L>(B
    dir = File.dirname(file)

    if  reg =~ File.basename(file) then
      new_bn = bn.gsub(reg, to)          # $B>e5-%U%!%$%kL>$N%Q%?!<%s(B/$from/$B$H0lCW$9$kItJ,$r(B $to $B$KCV$-49$($k(B
      new = "#{dir}/#{new_bn}"
      p new
        File.rename(file, new)            # $B%U%!%$%kL>$r=q$-49$($k(B.
    end
    }
}

p "done."
