2011-11-09 108 views
3

我想按日期對文件列表進行排序。我目前有一個文件路徑的字符串數組,我需要按修改日期對它們進行排序。我嘗試了以下,但運氣不大。我真的不明白sort_by方法是如何工作的。排序文件列表在Ruby中修改日期的路徑

@files.sort_by {|filename| File.mtime(filename) } 

編輯

我也試着將它們轉換爲日期,對它們進行排序。

@files.sort_by {|filename| DateTime.parse(File.mtime(filename).to_s) } 

謝謝!

回答

4

你有的行正在按照你的預期工作。我已經創建了四個文件,這是由ls -lt輸出,它通過修改過的文件進行排序:

$ ls -t 
2 3 4 1 

你舉的例子輸出:

@files = Dir.entries(Dir.pwd) 
@files.sort_by { |file| File.mtime(file) } 
=> ["2", ".", "3", "4", "1", ".."] 

注:按照約定的方法在任何一組不不改變設置本身。您需要撥打sort_by!才能將排序的集合應用到原始集合。

4

你的第一個例子應該工作正確,但它只是返回排序的文件數組。如果你想改變你的變量,請嘗試mutator sort_by!

@files.sort_by! {|filename| File.mtime(filename) } 
+0

謝謝!這幫助了我! – KavitaC