元ファイルの変更日/追加日を別ファイルにコピー

某ソフトでNHKラジオを録音しているのだけど、一時期だけ設定ミスをして番組後も5時間ほど録音してしまったことが。ということで15分(+30秒)に切る Ruby スクリプトを書いてみた。
そのときに、切り取った後のファイルの変更日/追加日を元のファイルと同じにする設定を加えてみた。

require 'pathname'

ARGV.each do |file_path|
  file_out = file_path.dup
  file_out[/\.mp3/] = '_trim.mp3'
  
  `ffmpeg -y -i #{file_path} -t 930 -acodec copy #{file_out}`
  
  pathname_orig = Pathname.new(file_path)
  pathname_trim = Pathname.new(file_out)
  pathname_trim.utime(pathname_orig.atime, pathname_orig.mtime)
end

もちろん Pathname ライブラリの Pathname#utime を使わなくても(File.utime メソッドで)いいんですが、Pathname ライブラリが好みなので。

参考:Pathnameクラスでファイル情報を得るには - 別館 子子子子子子(ねこのここねこ)