フォルダ内の.scalaファイルのタイプスタンプのスナップを取得する。
既存のタイムスタンプと現在のファイルのタイムスタンプを比較し更新されたファイルを取得する。
ファイル一覧のファイルをコンパイルする
p Dir::entries("/home/take")
[".", "..", "WorkbookScala.scala"]
p Dir::entries("/home/take")
[".", "..", "WorkbookScala.scala"]
フォルダの区切り文字は\ではなく、/を使うこと
s = File.stat("c:/scala/user/src/WorkbookScala.scala") puts File.mtime(fname).strftime("%Y/%m/%d %H:%M:%S") # 最終更新時刻
c:/scala/user/src/WorkbookScala.scala 2009/12/05 22:16:11
path=ARGV[0].gsub("\\","/") ext="scala" outfile="timestamp.txt" buffer = "" # **は再帰的検索。\0は複数パターンの区切り。.*は隠しファイル取得 Dir.glob("#{path}/**/*\0#{path}/**/.*" + ext).each{|name| puts name buffer = buffer + name + "\n" s = File.stat(name) timestamp = File.mtime(fname).strftime("%Y/%m/%d %H:%M:%S") # 最終更新時刻 puts timestamp buffer = buffer + timestamp + "\n" } # タイムスタンプスナップを上書き更新します。 file = File.open(path + "/" + outfile, "w"); # 書き込む file.write(buffer); file.close
ruby c:\scala\bin\snap_timestamp.rb "c:\scala\user\src"
更新したファイルを出力する
#第一引数はフォルダ名 path=ARGV[0].gsub("\\","/") ext=/.*\.scala$/ outfile="timestamp.txt" current={} # **は再帰的検索。\0は複数パターンの区切り。.*は隠しファイル取得 Dir.glob("#{path}/**/*\0#{path}/**/.*" ).each{|name| if ext =~ name s = File.stat(name) current.store(name,File.mtime(name).strftime("%Y/%m/%d %H:%M:%S")) end
}
# タイムスタンプ保存用ファイル読み込み before={} file = open(path+"/"+outfile) buffer = file.read().split("\n"); file.close
#2行を1つの配列にまとめた配列を作成 newItem="" newItem = nil buffer.each{|line| if newItem == nil newItem=line else if ext =~ newItem before.store(newItem,line) end newItem = nil end } #タイムスタンプの比較 更新・新規追加したファイルを出力 current.each{|filepath, timestamp| if timestamp != before.fetch(filepath) puts filepath end }