5

ファイル名にタイムスタンプを挿入する簡単な方法はありますか?

def time_stamped_file(file)
  file.gsub(/\./,"_" + Time.now.strftime("%m-%d_%H-%M-%S") + '.') 
end

f = "test.txt"
puts time_stamped_file(f) 


=> test_01-24_12-56-33.txt
4

4 に答える 4

10

必ずしも「簡単」である必要はありませんが、これを行うためのもう少し標準的で堅牢な方法を次に示します。

def timestamp_filename(file)
  dir  = File.dirname(file)
  base = File.basename(file, ".*")
  time = Time.now.to_i  # or format however you like
  ext  = File.extname(file)
  File.join(dir, "#{base}_#{time}#{ext}")
end

timestamp_filename("test.txt")     # => "./test_1359052544.txt"
timestamp_filename("test")         # => "./test_1359052544"
timestamp_filename("dir/test.csv") # => "dir/test_1359052544.csv"
于 2013-01-24T18:31:57.103 に答える
2

一意の名前のファイルを作成しようとしていて、元のファイル名を含める必要がない場合は、組み込みの Tempfile クラスを使用できます。

require 'tempfile'

file = Tempfile.new('test')
file.path
#=> "/var/folders/bz/j5rz8c2n379949sxn9gwn9gr0000gn/T/test20130124-72354-cwohwv"
于 2013-01-24T19:28:43.470 に答える
1

より短いアプローチが必要な場合 (タイムスタンプの精度を特に気にしない場合) は、以下の SO 投稿で言及されているように、Paperclipに似たアプローチを採用できます。

ペーパークリップ - ファイル名に追加されるタイムスタンプはどのように作成されますか?

于 2013-01-24T19:24:26.930 に答える