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);
}