Ciao,
una soluzione semplice al tuo problema potrebbe essere quella di inserire in un array associativo i file nel seguente modo:
alla chiave fai corrispondere la data dell'ultima modifica (in formato timestamp quindi secondi), al valore fai corrispondere il file, alla fine ordini in modo decrescente per chiavi e stampi il numero di file che ti interessa.

Segue un esempio di codice:
arrayFile = array();
while ( $file = readdir($percorso) ) {
if ($file == ".." || $file == "." || $file == ".DS_Store" || $file == ".com.apple.timemachine.supported" || $file == "miniature") {
continue;
} else {
$arrayFile[filemtime("file/".$file)]=$file; // aggiungiamo il file all'array
}
}
krsort($arrayFile); // ordiniamo l'array per chiave in ordine decrescente

$contatore = 0;
$numFileDaStampare= 5;
foreach ($arrayFile as $file) {
if($contatore == 5){
exit();
}
$contatore++;
// istruzioni per stampare le informazioni dei file
}

N.B. questo script ha un problema, se due file sono stati creati nello stesso istante (cosa molto poco probabile, ma possibile, perchè parliamo di secondi) il primo file viene persò perchè il nel momento in cui andiamo ad aggiungere all'array il file, la chiave è la stessa e quindi il primo file viene sovrascritto.