2011-01-20 12 views
6

ファイル名の配列を持っていますが、これらのファイルを変更日付で並べ替える方法はありますか?ファイルの配列を作成し、ルビーの日付で並べ替えます。

+0

あなたには2つの修正時間があります。 'File.mtime'と' File.ctime'との間には微妙な違いがあります。 –

+0

@theTinMan: 'File.ctime'は、ファイルが作成された時刻を指します。変更されていません。 –

+1

絶対にありません。 ''名前付きファイルの変更時刻(ファイル自体ではなく、ファイルに関するディレクトリ情報が変更された時刻)を返します。」「Windowsのみがファイル作成日をサポートしています。 * nixは変更時刻のみを認識します。 –

答えて

15

File.mtimeメソッドと組み合わせてsort_byメソッドを使用できます。このメソッドは、指定されたファイルの最終更新時刻を返します。

filenames.sort_by {|filename| File.mtime(filename) } 
+2

'sort_by'は受信側を変更するのではなく、代わりに新しい配列を返しますので、結果を直接使用するか(例えば' names.sort_by {...} .each {...} ')結果を保存する(例えば、 'sorted = names.sort_by {...}')。しかし、Ruby 1.9.2では 'sort_by!'が追加され、配列をインプレースで変更することができました。 – Phrogz

関連する問題