Veja o código que é uma mesclagem de PHP e Shell
<?php
/* damos um valor incial ao i para renomear os arquivos numerados no loop */
$i = 1;
/* Iniciamos o loop foreach para listar os arquivos utilizando a função glob() */
foreach (glob("*.*") as $arquivo) {
/* utilizamos a função substr() para não mexermos na extensão do arquivo */
$ext = substr($arquivo, -4);
/* criamos uma condição para caso que as extensões forem maior que 3 letras e um ponto, ex.: jpeg, java... */
/* Ou seja na renomeação se for maior que 3 letras o arquivo.jpeg, ficaria arquivojpeg, o (.) seria substituido,
logo, se a função strchr não encontrar o (.) no arquivo é que ele foi substituído, então quer dizer que o extensão
provavelmente foi maior que 3 letras, há outras formas de fazer isso, essa eu achei melhor */
if(!strchr($ext, ".")){
$ext = substr($arquivo, -5);
}
/* incluir aqui os arquivos que vc não deseja renomear, pus esse 3 como exemplo */
if($arquivo == "index.php" || $arquivo == "backup.php" || $arquivo == "renomear.php"){
//nao faça nada
}else{
/* utilizamos a função rename para renomear em numeração */
rename($arquivo, $i++.$ext);
}
}
/* rodando os comandos acima, após ler esta parte, informa que os arquivos foram renomeados */
echo "Renomeados!\n";
?>