diff --git a/System/File/Local/Directory.php b/System/File/Local/Directory.php index 11e08dd06..9a4249fef 100644 --- a/System/File/Local/Directory.php +++ b/System/File/Local/Directory.php @@ -81,12 +81,17 @@ class Directory extends FileAbstract implements DirectoryInterface throw new PathException($path); } - $list = []; - $path = rtrim($path, '\\/'); - - foreach ($iterator = new \RecursiveIteratorIterator( + $list = []; + $path = rtrim($path, '\\/'); + $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), - \RecursiveIteratorIterator::SELF_FIRST) as $item + \RecursiveIteratorIterator::SELF_FIRST); + + if ($filter !== '*') { + return \RegexIterator($iterator, '/' . $filter . '/i', \RecursiveRegexIterator::GET_MATCH); + } + + foreach ($iterator as $item ) { $list[] = str_replace('\\', '/', $iterator->getSubPathname()); }