Loading

PHP递归重命名图片文件名

/**
 * 递归重命名图片文件名
 */
function rename_dir_file($path, $filter_arr)
{
    $file_arr = filter_file(scandir($path), $filter_arr);
    echo "path: $path", PHP_EOL;

    foreach ($file_arr as $i => $value) {
        $filename = $path . DIRECTORY_SEPARATOR . $value;
        if (is_dir($filename)) {
            echo "do rename dir files " . $filename, PHP_EOL;
            rename_dir_file($filename, $filter_arr);
        } elseif (is_file($filename)) {
            $file = new SplFileObject($filename);
            $newname = sprintf("%s%s%s%s", $file->getPath(), DIRECTORY_SEPARATOR, "img_{$i}.", $file->getExtension());
            echo "rename ", $file->getPathname(), " to ", $newname, PHP_EOL;
            rename($file->getPathname(), $newname);
        }
    }
}

//file name filter
function filter_file($scandir, $filter_arr)
{
    return array_values(array_diff($scandir, $filter_arr));
}

if (!isset($_SERVER['argv'][1]) || !is_dir($_SERVER['argv'][1])) {
    exit('usage: rename.php /path');
}

$filter_arr = [
    '..',
    '.',
    (new SplFileObject(__FILE__))->getBaseName(),
];
rename_dir_file($_SERVER['argv'][1], $filter_arr);
posted @ 2021-03-15 10:41  chnyang  阅读(82)  评论(0编辑  收藏  举报