Elixir/Phoenix 扫描目录查找目录

Ily*_*lya 2 elixir phoenix-framework

我正在尝试扫描给定的目录并且只需要接收目录。这种方式返回给定中的所有文件和文件夹dir

dir = "/Users/user/releases/"
folders = 
    File.ls(dir)
    |> elem(1)
Run Code Online (Sandbox Code Playgroud)

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

Dog*_*ert 5

您可以过滤文件/目录列表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"]
Run Code Online (Sandbox Code Playgroud)

  • `File.cd!(dir, fn -> File.ls!|> Enum.filter(&File.dir?/1) end)` 对我来说看起来更有表现力。 (2认同)