为什么是“ls -d * /”!不在scala工作?

时间:2015-10-17 01:39:15

标签: scala

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,但我很好奇为什么它不起作用?

2 个答案:

答案 0 :(得分:3)

正如其他答案所述,*由shell扩展,而不是由Java / Scala扩展。

好像你只对在当前目录中查找目录列表感兴趣。对于那个产生一个单独的shell绝对是一种过度杀伤。

这可以很容易地在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)

答案 1 :(得分:2)

因为“*”扩展由shell处理。试试这个。

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

<强>更新

这应该可以为您提供所需的输出。不确定底层机制。

Seq("sh", "-c", "ls -d */").!