2012-07-27 58 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

相关问题