2011-11-09 1 views
3

ファイルのリストを日付順にソートしようとしています。私は現在、ファイルパスの文字列配列を持っており、日付を変更して並べ替える必要があります。私は以下にしようとしましたが、ほとんど運がありません。私は、sort_byメソッドがどのように動作するかを本当に理解していません。ファイルの並び順Rubyで修正された日付別のパス

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

EDIT

私はまた、日付に変換し、それらをソートしようとしました。

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

ありがとう!

答えて

4

ミューテータを試してみてください、あなたが持っている行は、あなたが期待するよう取り組んでいます。私は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

最初の例は正しく動作するはずですが、ファイルのソートされた配列を返します。あなたは、変数あなたを変更したい場合は、sort_by!

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

ありがとうございます!これは私を助けた! – KavitaC

関連する問題