Elixir / Phoenix扫描目录的目录

时间:2017-05-23 11:07:01

标签: elixir phoenix-framework

我正在尝试扫描给定目录,只需要接收目录。这样可以返回给定dir中的所有文件和文件夹:

dir = "/Users/user/releases/"
folders = 
    File.ls(dir)
    |> elem(1)

是否可以过滤folders以仅保留目录,而不保留单个文件?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用File.dir?/1过滤文件/目录列表,只返回目录。由于File.ls!/1仅返回文件名,而不是完整路径,因此您还需要将dir与文件名相关联,然后再将其传递给File.dir?/1

iex(1)> dir = "."
"."
iex(2)> File.ls!(dir) |> Enum.filter(&File.dir?(Path.join(dir, &1)))
["config", "lib", "test"]
iex(3)> dir = "test"
"test"
iex(4)> File.ls!(dir) |> Enum.filter(&File.dir?(Path.join(dir, &1)))
["foo"]