Codice PHP:
<?php
$files 
= array("file1.txt","file6.txt","file4.txt","file3.txt"); // array di esempio

function primoMancante($array) {
usort($array,"strnatcmp");
$numeri = array();
foreach(
$array as $file) {
    
$numero preg_replace("/[^\\d]/",'',$file);
    
$numeri[] = $numero;
    }
$maggiore array_pop($numeri);
$mancanti array_diff(range(1,$maggiore),$numeri);
$primo_mancante array_slice($mancanti,0,1);
return 
$primo_mancante[0];
}

$numero_mancante primoMancante($files);
echo 
$numero_mancante// restituisce 2. Nel caso non ci siano numeri mancanti restituisce il maggiore
?>
per avere direttamente il nome del file basta che sostituisci l'ultima riga della funzione
return $primo_mancante[0];
con questa
return 'file'.$primo_mancante[0].'.txt';