猿问

重命名php中目录的所有子目录

我有一个像这样的目录结构:


.

├── uploads

|   ├── 1

|   |   ├── example.jpeg

|   |   └── example.jpeg

|   ├── 2

|   |   └── example.jpeg

|   ├── 3

|   |   ├── example.jpeg

|   |   ├── example.jpeg

|   |   └── example.jpeg

我希望重命名 firectory 中的所有目录uploads(在我的示例中,这些目录称为1,2和3)。我想根据它们当前的名称重命名所有这些目录。例如,我想1成为1asd,2以2asd及3对3asd。我已经寻找了类似的问题,并找到了This one(虽然这个问题看起来很相似,但实际上是关于其他问题)和this one,这是关于重命名文件的。我试过:


if ($handle = opendir('../path/to/uploads')) {

    while (false !== ($fileName = readdir($handle))) {

        $newName = $fileName.'asd';

        rename($fileName, $newName);

    }

    closedir($handle);

}

这不起作用,因为 all$filename总是.. 我的猜测是因为它是关于目录而不是文件。我该如何定位目录?


边注1:我希望重命名的目录包含我不想丢失/删除的文件。在我的例子中,它们都被称为example.jpeg.


边注2:我的uploads目录路径是正确的,我对此进行了测试。


摇曳的蔷薇
浏览 153回答 3
3回答

噜噜哒

您要检查以确保它是一个目录并检查它是否不是当前目录.或父..目录:if(is_dir($fileName) && $fileName!= "." && $fileName!= "..") {   $newName = $fileName.'asd';   rename($fileName, $newName);}此外,正如mcserep所述, 中有语法错误,请注意右括号。$newName = $fileName.'asd');

森栏

经过一些试验和错误,我设法找到了一个解决方案:$dir = '../path/to/uploads/';if (is_dir($dir)) {    if ($dh = opendir($dir)) {        while (($filename = readdir($dh)) !== false) {                    if($filename!= "." && $filename!= "..") {                        rename($dir.$filename, $dir.$filename."asd");                    }        }        closedir($dh);    }}
随时随地看视频慕课网APP
我要回答