フォルダ内の.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
}