我目前正在编写一个函数,使用 UNIXls -m
命令列出一堆文件,然后使用正则表达式将它们转换为列表。
我的功能如下:
def genFileList(path : String = "~") : Iterator[String] = {
val fileSeparatorRegex: Regex = "(.*),".r
val fullCommand : String = s"ls -m $path"
val rawFileList: String = fullCommand.!!
val files: Iterator[String] = fileSeparatorRegex.findAllIn(rawFileList).matchData.map(_.group(1))
var debug : List[String] = files.toList
debug
files
}
例如:假设我有一个名为 test 的文件夹,其中包含 3 个文件:test.txt test1.txt test2.txt。结果列表是:
很奇怪...
让我们将函数更改为:
def genFileList(path : String = "~") : Iterator[String] = {
val fileSeparatorRegex: Regex = "(.*)\\n".r \\ Changed to match newline
val fullCommand : String = s"ls -1 $path" \\ Changed to give file name separated via newline
val rawFileList: String = fullCommand.!!
val files: Iterator[String] = fileSeparatorRegex.findAllIn(rawFileList).matchData.map(_.group(1))
var debug : List[String] = files.toList
debug
files
}
太棒了:
任何人都可以帮助我理解第一个失败的案例吗?为什么不ls -m
匹配生成的逗号?