Pathnameクラスでファイル情報を得るには

Pathname#stat メソッドを使います。 File::Stat クラスを返します。

> file = Pathname.new('test.mp4')
=> #<Pathname:test.mp4>
> file.stat
=> #<File::Stat
 dev=0x1000004,
 ino=78701935,
 mode=0100644 (file rw-r--r--),
 nlink=1,
 uid=501 (riocampos),
 gid=20 (staff),
 rdev=0x0 (0, 0),
 size=43609067,
 blksize=4096,
 blocks=85176,
 atime=2016-04-04 00:04:28 +0900 (1459695868),
 mtime=2016-03-28 16:12:04 +0900 (1459149124),
 ctime=2016-04-04 00:03:07 +0900 (1459695787)>

なお似た名前のメソッドである Pathname#lstat メソッドは、レシーバがシンボリックリンクのとき「シンボリックリンクに関してリンクそのものの情報を File::Stat として返します」。

*timeとMacのFinderでの表示との対応

Finder stat
最後に開いた日 atime *1
変更日 mtime
追加日 ctime
作成日 なし

ちなみに、Finder に標準で表示されるのは変更日なので mtime 。 ls -l で表示されるのも mtime 。
stat コマンドでも Pathname#stat メソッドとほぼ同じ情報が表示される。ただし作成日(birthtime)も表示される。

$ stat test.mp4 
16777220 78701935 -rw-r--r-- 1 riocampos staff 0 43609067 "Apr  4 00:04:28 2016" "Mar 28 16:12:04 2016" "Apr  4 00:03:07 2016" "Mar 28 16:12:04 2016" 4096 85176 0 test.mp4
$ stat -s test.mp4 
st_dev=16777220 st_ino=78701935 st_mode=0100644 st_nlink=1 st_uid=501 st_gid=20 st_rdev=0 st_size=43609067 st_atime=1459695868 st_mtime=1459149124 st_ctime=1459695787 st_birthtime=1459149124 st_blksize=4096 st_blocks=85176 st_flags=0

st_* の意味は stat(2) Mac OS X Developer Tools Manual Page を参照。

タイムスタンプの更新メソッド

Pathname#utime を使います。
後記する touch コマンドと同じことが出来ますね。

utime(atime, mtime) -> Integer

File.utime(atime, mtime, self.to_s) と同じです。
[PARAM] atime:
最終アクセス時刻を Time か、起算時からの経過秒数を数値で指定します。
[PARAM] utime:
更新時刻を Time か、起算時からの経過秒数を数値で指定します。

書いてあったように、File.utime に対応します。

utime(atime, mtime, *filename) -> Integer

ファイルの最終アクセス時刻と更新時刻を変更します。変更したファイルの数を返します。変更に失敗した場合は例外 Errno::EXXX が発生します。

touch -r src_file dest_file、つまり src_file のタイムスタンプを dest_file にコピーする、のを Pathname クラスで行うには次のようにすればよいですね。

src_file = Pathname.new("src_file")
dest_file = Pathname.new("dest_file")
dest_file.utime(src_file.atime, src_file.mtime)

なお Pathname.newの代わりに Kernel#Pathnameも使えます(つまりPathname("src_file") と書いても良い)。

参考:*timeの意味

UNIX のファイルには、一般的に 3つのタイムスタンプがある。
atime … 最終アクセス時刻 (access time)
mtime … 最終変更時刻 (modify time)
ctime … 最終ステータス変更時刻 (change time)

atime・mtime・ctime

atime は、最後にファイルにアクセスした時刻のこと。より正確には、ファイル内容を read(2) した場合に変更される。ファイルをオープンしただけでは変更されないし、ファイル内容を write(2) しても変更されない。当然ながら、read(2) する権限がなかった場合も変更されない。
mtime は、最後にファイルを変更した時刻のこと。より正確には、ファイルに write(2) または truncate(2) した場合に変更される。
ctime は、最後にファイルを変更した時刻のこと。より正確には、ファイルに write(2) または truncate(2) した場合、そして inode データの修正を行った場合に変更される。
 :

タイムスタンプの表示

ls -l で mtime、ls -lc で ctime、ls -lu で atime を表示することができる。
 :

タイムスタンプの変更

atime・mtime は、touch コマンドを用いれば (つまり utimes(2) を用いれば) 任意の時刻を設定することが可能である。
(引用者註:touch コマンドはオプション無しで atime と mtime の両方、-a オプションで atime のみ、-m オプションで mtime のみ設定。-r オプションを使うと、[-r file] で指定したファイルのタイムスタンプをコピーする。touch(1) Mac OS X Manual Page 参照)
 :

ファイル生成時刻

伝統的な UNIX では、ファイル生成時刻は保持していない。
UNIXの部屋 コマンド検索:タイムスタンプ (*BSD/Linux)

*1:ただしquicklookで見た場合にも atime は更新されるが「最後に開いた日」は更新されない