0

「MyDir」という名前のディレクトリがあります。私はUbuntuOSを使用しています。そして、私はさまざまな拡張子を持つ7つのファイルを持っています。各ファイルにタイムスタンプを追加するRubyプログラムを作成したいと思います。

4

2 に答える 2

1

ターゲットディレクトリ内のすべてのファイルのリストを取得し(を参照Dir.glob(...))、ファイルを開いて「追加モード」(を参照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'))
于 2012-07-27T14:44:06.017 に答える
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") } }
于 2012-07-27T12:40:32.537 に答える