2011-01-20 4 views
6

У меня есть массив имен файлов, есть ли способ отсортировать эти файлы по дате изменения?Создать массив файлов и отсортировать по дате в ruby ​​

+0

Доступны два варианта модификации. 'File.mtime' против' File.ctime', с тонкой разницей между ними. –

+0

@theTinMan: 'File.ctime' относится к времени, когда файл был создан, а не изменен. –

+1

Абсолютно нет. '" Возвращает время изменения для именованного файла (время, когда информация о файле была изменена, а не сам файл). "Только Windows поддерживает дату создания файла. * nix только понимает изменение время. –

ответ

15

Метод sort_by в сочетании с методом File.mtime, который возвращает последнее время модификации данного файла.

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