-
Notifications
You must be signed in to change notification settings - Fork 145
Globbing
Rajesh R edited this page Jun 16, 2024
·
1 revision
No need to port this to Scala:
val dir = "src"/"test"
val matches: Iterator[File] = dir.glob("**/*.{java,scala}")
// above code is equivalent to:
dir.listRecursively().filter(f => f.extension == Some(".java") || f.extension == Some(".scala"))
You can even use more advanced regex syntax instead of glob syntax:
val matches = dir.globRegex("^\\w*$".r) //equivalent to dir.glob("^\\w*$")(syntax = File.PathMatcherSyntax.regex)
By default, glob syntax in better-files
is different from
the default JDK glob behaviour since it always includes path. To use the default behaviour:
dir.glob("**/*.txt", includePath = false) // JDK default
//OR
dir.glob("*.txt", includePath = true) // better-files default
You can also extend the File.PathMatcherSyntax
to create your own matchers.
For custom cases:
dir.collectChildren(_.isSymbolicLink) // collect all symlinks in a directory
For simpler cases, you can always use dir.list
or dir.walk(maxDepth: Int)