画像フォルダのファイルを連番に書き換える

PHP

PRTFileName ('./data/*.jpg');
exit ();

//指定のディレクトリのファイル名を順序だてて再構成する(新しい順)
function PRTFileName ($path, $format = 'img_%04d.jpg', $limit = 10000) {

  $files = [];
  $cnt = 0;

  //$pathのチェック
  $info = pathinfo ($path);
  if (false === is_dir($info['dirname']))
    throw new Expression ('No directory!');

  //ディレクトリ内のファイル名の取得と日時を配列にする
  foreach (glob ($path) as $file)
    $files[$file] = filemtime ($file);  

  //日付順でソート
  arsort ($files);
  //ファイル名で再構成 & ここで最大数で切り取り
  $files = array_slice (array_keys ($files), 0, $limit -1);

  //拡張子がtmpでリネーム
  foreach ($files as &$fName) {
    $f = pathinfo ($fName);
    $nName = sprintf ('%s/%s.tmp', $f['dirname'], $f['filename']);
    rename ($fName, $nName);
    $fName = $nName;
  }

  //書式に従ってファイル名を書き直す
  foreach ($files as $fName) {
    $nName = sprintf ('%s/'.$format, $info['dirname'], $cnt++);
    rename ($fName, $nName);
  }

  return count ($files);
}