首页 > 解决方案 > 如何在 Elixir 中获得按日期排序的目录列表?

问题描述

如何在 Elixir 中获得按日期排序的目录列表?

File.ls/1给出仅按文件名排序的列表。

模块中的其他功能File似乎与此无关。

标签: dateelixirfile-listing

解决方案


也许有一个我不知道的内置函数,但是您可以使用以下方法制作自己的函数File.stat!/2

File.ls!("path/to/dir")
|> Enum.map(&{&1, File.stat!("path/to/dir" <> &1).ctime})
|> Enum.sort(fn {_, time1}, {_, time2} -> time1 <= time2 end)

示例输出:

[
  {"test", {{2019, 3, 9}, {23, 55, 48}}},
  {"config", {{2019, 3, 9}, {23, 55, 48}}},
  {"README.md", {{2019, 3, 9}, {23, 55, 48}}},
  {"_build", {{2019, 3, 9}, {23, 59, 48}}},
  {"test.xml", {{2019, 3, 23}, {22, 1, 28}}},
  {"foo.ex", {{2019, 4, 20}, {4, 26, 5}}},
  {"foo", {{2019, 4, 21}, {3, 59, 29}}},
  {"mix.exs", {{2019, 7, 27}, {8, 45, 0}}},
  {"mix.lock", {{2019, 7, 27}, {8, 45, 7}}},
  {"deps", {{2019, 7, 27}, {8, 45, 7}}},
  {"lib", {{2019, 7, 27}, {9, 5, 36}}}
]

推荐阅读