public function getAllFiles($initialDirectory, $regex = null)
{
$directoryIterator = new RecursiveDirectoryIterator($initialDirectory, RecursiveDirectoryIterator::SKIP_DOTS);
$flattenedIterator = new RecursiveIteratorIterator($directoryIterator);
$iterator = $regex !== null ? new RegexIterator($flattenedIterator, $regex) : $flattenedIterator;
$output = [];
foreach ($iterator as $i) {
$output[] = $i->getRealpath();
}
usort($output, function ($a, $b) {
return strnatcasecmp($a, $b);
});
return $output;
}