El código de Scala generalmente usa clases de Java para tratar con E / S, incluida la lectura de directorios. Entonces tienes que hacer algo como:
import java.io.File
def recursiveListFiles(f: File): Array[File] = {
val these = f.listFiles
these ++ these.filter(_.isDirectory).flatMap(recursiveListFiles)
}
Puede recopilar todos los archivos y luego filtrar usando una expresión regular:
myBigFileArray.filter(f => """.*\.html$""".r.findFirstIn(f.getName).isDefined)
O puede incorporar la expresión regular en la búsqueda recursiva:
import scala.util.matching.Regex
def recursiveListFiles(f: File, r: Regex): Array[File] = {
val these = f.listFiles
val good = these.filter(f => r.findFirstIn(f.getName).isDefined)
good ++ these.filter(_.isDirectory).flatMap(recursiveListFiles(_,r))
}