我有一个像这样的目录结构:.├── 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目录路径是正确的,我对此进行了测试。
3 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
您要检查以确保它是一个目录并检查它是否不是当前目录.或父..目录:
if(is_dir($fileName) && $fileName!= "." && $fileName!= "..") {
$newName = $fileName.'asd';
rename($fileName, $newName);
}
此外,正如mcserep所述, 中有语法错误,请注意右括号。$newName = $fileName.'asd');
森栏
TA贡献1810条经验 获得超5个赞
经过一些试验和错误,我设法找到了一个解决方案:
$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);
}
}
- 3 回答
- 0 关注
- 152 浏览
添加回答
举报
0/150
提交
取消