- Rubyでファイルの更新日時(mtime)を`File.mtime(path)`で取得できる
- `Dir.glob`等で取得したパス配列を`sort_by { |f| File.mtime(f) }`で更新日時順にソートできる
- 新しい順にしたい場合は末尾に`.reverse`を付けるか、`sort_by`のブロックで`-File.mtime(f).to_i`のように負号で逆順化
Railsプロジェクトでファイル一覧を作成日時順に並び替えたいときの定番イディオムをメモしておきます。
【Rails】ファイルの作成日時順に、ファイルを並び替えるFile.mtime()
RubyでFile.mtime(path)はファイル更新日時を取得し、Dir.glob.sort_by { |f| File.mtime(f) }で作成日時順に並び替えできます(2026年5月時点)。
File.mtime()でファイルを作成日時順に並び替える方法は?
File.mtime()でファイルの作成日時が取れるので、それをsort_byで並び替える。
こちらを参考にしました。
Rubyでファイル一覧を作成日時順に取得する方法 - 動かざることバグの如し
findコマンドのmtimeオプションまとめ #Linux - Qiita
RailsやRubyを学びたい人へ
RailsやRubyを本格的に学ぶなら「RailsHack」(早期割29,800円)かUdemyの主要Rails入門3コース受講がおすすめ。Udemyは90%OFFセール頻発・30日返金保証付き(2026年5月時点)。
RailsやRubyを学びたい人は、
RailsHack(レイルズハック)という、
最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、
Udemy
で下記のコースを受講すると良いです★
✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座
✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】
<- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。
✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう
また、
Udemy
は定期的にセールをやっていますし(90%OFFとかもザラ)、
「30日間なら返金できる」ので、
満足できなかった時でも安心です。

【公式】RailsHack(レイルズハック)
【公式】Udemyで学んでみる
![]()
よくある質問(FAQ)
Q. File.mtimeとFile.ctimeとFile.atimeの違いは?
A.mtimeは最終更新日時(modification time)・ctimeはステータス変更日時(change time、Linuxではinode変更時)・atimeは最終アクセス日時(access time)です。ファイルの「作成日時」 をUNIX系で厳密に取るのは難しく、mtimeが実用上の代用として使われます。
Q. Dir.glob以外でファイル一覧を取る方法は?
A.Dir.entries('path')(隠しファイルも含む)・Dir['path/*'](globのシンタックスシュガー)・Pathname.new('path').childrenなどがあります。再帰的に取りたい場合はDir.glob('path/**/*')が便利です。
Q. mtimeが同じ場合の二次ソート条件は?
A.sort_by { |f| [File.mtime(f), f] }のように配列を返すと、第一要素(mtime)が同じ場合に第二要素(ファイル名)でソートされます。安定したソート結果が必要な場面で使います。
Q. mtimeで降順(新しい順)に並び替えるには?
A.sort_by { |f| File.mtime(f) }.reverseまたはsort_by { |f| -File.mtime(f).to_i }が定番です。前者は分かりやすく、後者は1回のループで済むので大量ファイルで多少有利です。
Q. ファイルではなくディレクトリの更新日時で並べたい場合は?
- ディレクトリも
File.mtimeで扱えます。ディレクトリのmtimeは「中身のファイル追加/削除/リネーム」 で更新されます。Dir.glob('path/*').select { |f| File.directory?(f) }.sort_by { |d| File.mtime(d) }のように使えます。