PHP: rename all files to lower case in a directory recursively

人走茶凉 提交于 2019-12-09 13:34:49

问题


I need help. I want to rename all files to lower case within a directory recursively. I have a code to test but it only rename within that folder not recursively. How can I make it to do it recursively.

This is the code I use

<?php
 $directory="/data";
 $files = scandir($directory);
 foreach($files as $key=>$name){
    $oldName = $name;
    $newName = strtolower($name);
    rename("$directory/$oldName","$directory/$newName");
  }
?>

回答1:


You can use the SPL's RecursiveDirectoryIterator for that.

<?php
$path = realpath('your/path/here');

$di = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach($di as $name => $fio) {
    $newname = $fio->getPath() . DIRECTORY_SEPARATOR . strtolower( $fio->getFilename() );
    echo $newname, "\r\n";
    //rename($name, $newname); - first check the output, then remove the comment...
}


来源:https://stackoverflow.com/questions/32173320/php-rename-all-files-to-lower-case-in-a-directory-recursively

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!