scala> import sys.process._
import sys.process._

scala> "ls -d */".!
ls: */ : No such file or directory
res0: Int = 2

Как я могу получить все папки в текущем каталоге?

Я нашел это решение http://alvinalexander.com/scala/scala-function -list-subdirectories-in-directory, но мне любопытно, почему это не работает?

1
Alex 17 Окт 2015 в 04:39

2 ответа

Лучший ответ

Поскольку расширение "*" обрабатывается оболочкой. Попробуй это.

scala> "sh -c ls -d */".!

ОБНОВЛЕНИЕ

Это должно дать вам результат, который вы ищете. Не уверен в основном механизме.

Seq("sh", "-c", "ls -d */").!
2
jwvh 17 Окт 2015 в 04:06

Как упоминалось в другом ответе, * расширяется оболочкой, а не Java / Scala.

Похоже, вас интересует только поиск списка каталогов в текущем каталоге. Для этого создание отдельного панциря - определенно излишество.

Это довольно легко сделать на Scala (или Java):

scala> import java.io.File
import java.io.File

scala> new File("./").listFiles()
res3: Array[java.io.File] = Array(./dir1, ./file1)

scala> new File("./").listFiles().filter(_.isDirectory)
res4: Array[java.io.File] = Array(./dir1)
3
tuxdna 17 Окт 2015 в 11:08