scala/ScalaBook/appendix-B/findcmd.scala
import java.lang.System
import java.io.File
import java.util.regex.Pattern
val Path = System.getenv("PATH")
val PathSep = File.pathSeparator
val CASE_I = Pattern.CASE_INSENSITIVE
val pathFolders = Path.split(PathSep).toList
.map(new File(_)).filter { file =>
file.isDirectory && (
file.listFiles match {
case null => false
case _ => true
}
)
}
val names = args map (_.toLowerCase)
//println(pathFolders)
names foreach { name =>
println("--- " + name + " --->")
var counter = 0
pathFolders foreach { folder =>
val children = folder.list
val found = children filter { child =>
child.toLowerCase.indexOf(name) > -1 ||
Pattern.compile(name, CASE_I).matcher(child).find
}
if(found.size > 0) {
if(folder.getAbsolutePath.indexOf(" ") > -1) {
println("\"" + folder + "\":")
} else {
println(folder + ":")
}
println(" " + found.mkString(", "))
}
counter += found.size
}
// if(counter > 0)
println()
}