2012-07-27 51 views
0

我有一個名爲「MyDir」的目錄。我使用Ubuntu操作系統。我有7個文件與各種擴展。我想編寫一個Ruby程序來爲每個文件添加一個時間戳。Ruby代碼將時間戳添加到特定目錄中的每個文件

+2

[你嘗試過這麼遠嗎?(http://mattgemmell.com/2008/12/08/what-have-you-tried/) – maerics 2012-07-27 12:42:42

+0

我試圖打開文件&添加Timestamp = Time.now.to_i但它沒有工作 – 2012-07-27 13:04:40

+1

直接在您的問題中發佈您嘗試過的代碼,這樣做會幫助其他人識別您做錯了什麼(以及您正在嘗試做什麼)。 – maerics 2012-07-27 14:38:13

回答

1

你需要得到在目標目錄中的所有文件(見Dir.glob(...))的列表,然後再打開文件進行寫入「 append mode「(見File.open(...)),並簡單地寫入時間戳。例如:

def add_timestamps(dir, timestamp=Time.now) 
    Dir[File.join(dir, '*')].each do |filename| 
    File.open(filename, 'a') { |f| f.puts(timestamp) } 
    end 
end 

add_timestamps('MyDir') # OR... 
add_timestamps('MyDir', Time.parse('2001-02-03T04:05:06Z')) 
0

,如果你想將它添加到文件名

t = Time.new.to_i; Dir["MyDir/*"].each { |x| File.rename(x,"#{x}.#{t}") } 
# or dont add timestamp on files that are ending with 10 digits 
t = Time.new.to_i; Dir["MyDir/*"].each { |x| File.rename(x,"#{x}.#{t}") unless /\.\d{10}$/.match(x) } 

#if you want to add it to the end of the file's content 
t = Time.new.to_i; Dir["MyDir/*"].each { |x| File.open(x,'a') { |f| f.write("\n#{t}\n") } } 
+0

謝謝!它正在重命名我的文件與一些數字,但在該文件裏面沒有任何東西寫入 – 2012-07-27 12:47:01

+0

@ RoRProg..was有內容之前的文件? – rubyprince 2012-07-27 12:49:20

+1

不是他們是空文件。我只是想在它裏面添加時間戳。所以,當我打開這些文件時,我應該看到裏面印有時間日期等。 – 2012-07-27 13:06:21

相關問題