テキストでもそうなんだけど、「12月23日・メモ.xlsx」みたいに頭に日付つけたファイルを定期的に作って作業する事があるのよね。いちいちコピーしてたんだけど、めんどい。
そんなわけで、勝手に新しい日付をナンバリングして複写してみた。
#!/usr/bin/ruby -EUTF-8 require 'date' require 'fileutils' class String def _newest(nn) file = nil if nn == false file = Dir.glob("*.#{self}").sort_by {|f| File.mtime(f)}.reverse[0] else Dir.glob("*.#{self}").sort_by {|f| File.mtime(f)}.reverse.each{|fn| if fn =~ /^\d/ file = fn.clone break end } end file end def _getDate fn = self yd = Date.today.strftime("%Y") d = fn.gsub(/^(\d{1,9})月(\d{1,2})日.+$/,"#{yd}/\\1/\\2") d1 = DateTime.parse(d) fn2 = fn.clone if d =~ /^\d+\/\d+\/\d+$/ begin d3 = Date.today.strftime("%m月%d日") fn2 = fn.gsub(/^(\d{1,9})月(\d{1,2})日(.+)$/,"#{d3}\\3") rescue => ee p ee end else p "フォーマットが対応外(先頭にn月d日が入ってない)。" end fn2 end def _cpy_today fn = self._newest(true) fn2 = fn._getDate if fn != fn2 && File.exist?(fn2) == false print "#{fn} => #{fn2} ... " #FileUtils.cp(fn,fn2,{:preserve => true}) FileUtils.cp(fn,fn2) print "Done.\n" end end end prm = "xlsx" ARGV.each{|x| prm = x.clone if x =~ /^[a-z0-9]+$/ } prm._cpy_today
うん。
パスの通ったところに設置し、コンソールで作業したいディレクトリに移動して、このスクリプトを呼び出せばOK。
$ ruby neo.rb txt