2011-01-20 16 views
6

Bir dosya adı dizim var, bu dosyaları değişiklik tarihine göre sıralamanın bir yolu var mı?Dosya dizisini oluştur ve tarihe göre sırala ruby ​​

+0

Kullanabileceğiniz iki değişiklik zamanı vardır. File.mtime' ile 'File.ctime' arasında ikisi arasında ince bir fark var. –

+0

@theTinMan: 'File.ctime', dosyanın oluşturulmadığı, değiştirilmediği süreyi belirtir. –

+1

Kesinlikle hayır. '" Adlandırılmış dosya için değişiklik süresini döndürür (dosyayla ilgili dizin bilgilerinin değiştirilme zamanı değil, dosyanın kendisi.) "' Yalnızca Windows dosya oluşturma tarihini destekler. * nix yalnızca değişiklik zamanlarını anlar. –

cevap

15

sort_by yöntemini, belirtilen dosyanın son değiştirme zamanını döndüren File.mtime yöntemiyle birlikte kullanabilirsiniz.

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

Not 'sort_by', alıcıyı değiştirmez, bunun yerine yeni bir dizi döndürür. Dolayısıyla, sonucu doğrudan kullanmak istersiniz (örneğin,' names.sort_by {...} .each {...} ') veya sonucu kaydediniz (örneğin 'sıralanmış = names.sort_by {...}'). Ancak Ruby 1.9.2, diziyi yerinde değiştirmek için 'sort_by!' Özelliğini ekledi. – Phrogz