ももちゃん@アルモニコスです.
すっかり出遅れましたが,ファイル作成日でファイル名を作るスク
リプトを書いたので出してみます.
# デジカメの画像ファイル rename 用に作った.
読んで頂ければ分かりますが,ファイル名の重複判定とか,かなり
手抜いてます.でも時間がないし,適当に使えるので気にしない.
# ruby 的には正しい姿勢と言えよう :-).(たぶん (^^;))
でも,怪しさ爆発の英語 usage は恥ずかしいなぁ (^^;).
#!/usr/local/bin/ruby
# -*- ruby -*-
####################
def usage
print "usage: ", $0, " [-p <prefix>] [-y] file1 [file2 ...]\n\n"
print " default YYYYMMDDXX.ext (XX is sequential number)\n\n"
print "options:\n"
print " -c copy (default: move)\n"
print " -p <prefix> filename prefix (prefixYYMMDDXX.ext)\n"
print " -y format change to YYMMDDXX.ext\n"
exit 0
end
####################
$filelist = []
def make_filename(f)
prefix = $OPT_p
suffix = f[0].scan(/\.\w+$/)[0]
year = $OPT_y ? f[1].year % 100 : f[1].year
c = 0
filename = ""
while TRUE
filename = sprintf("%s%02d%02d%02d%02d%s",
prefix, year, f[1].month, f[1].day, c, suffix)
c += 1
next if $filelist.include?(filename)
break unless File.exist?(filename)
end
$filelist << filename
filename
end
####################
require "getopts"
usage() if getopts("cy", "p:") == nil
command = $OPT_c ? "cp" : "mv"
$files = []
for f in ARGV
next unless File.exist?(f)
$files.push [f, File.mtime(f)]
end
$files.sort! do |a, b|
a[1] <=> b[1]
end
print "#!/bin/sh\n"
$files.each do |f|
src = f[0]
dest = make_filename(f)
printf("%s %s %s\n", command, src, dest)
end
exit 0
####################