Salve, non ho purtroppo il tempo di aiutarti nei dettagli. Ma posso dirti sperando di esserti utile che poco fa ho risolto un problema simile ma non identico.
nel mio caso le directory avevano vari nomi e non numeri, ed inoltre per ogni sottocartella conoscevo il nome dell'unico file presente che era index.html.
La funziona sposta il file all'esterno rinominandolo con il nome della sottocartella dove si trovava inizialmente.
Ho risolto in questo modo
l'esempio è piuttosto rude, ma funziona, ovviamente è solo da usare in locale senza alcuna sicurezza.codice:$directory ='/home/cartellaprincipale'; name_dir($directory); function name_dir($directory) { $dir = new DirectoryIterator($directory); foreach ($dir as $fileinfo) { if ($fileinfo->isDir() && !$fileinfo->isDot()) { $name_file = $fileinfo->getFilename(); //restituisce il nome della directory //sposta il file delle directory rinominandolo con il nome di quello interno echo "sposto da".$directory."/".$name_file.'/index.html'. " ALLA ".$directory."/".$name_file.".html</br>"; rename($directory."/".$name_file.'/index.html',$directory."/".$name_file.".html"); } } }
Come alternativa penso si possa realizzare qualcosa di più pratico e veloce con la funzione glob
http://php.net/manual/en/function.glob.php e probabilmente con una ricerca si trova qualcosa anche sul forum.