PHP使用子目录作为新文件名重命名所有文件

安华

如何在下面重命名此文件?

/Categories
|  /Celebrities
|  |  /Alyssa Milano
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg
|  |  /Britney Spears
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg
|  /Singers
|  |  /Rihanna
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg
|  |  /Katy Perry
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg

我想将1.jpg2.jpg3.jpg4.jpg5.jpg重命名

艾丽莎·米兰诺(Alyssa Milano)-1.jpg,艾丽莎·米兰诺(Alyssa Milano)-2.jpg,艾丽莎·米兰诺(Alyssa Milano)-3.jpg

布兰妮·斯皮尔斯-1.jpg,布兰妮·斯皮尔斯-2.jpg,布兰妮·斯皮尔斯-3.jpg

蕾哈娜-1.jpg,蕾哈娜-2.jpg,蕾哈娜-3.jpg

凯蒂·佩里(Katy Perry)-1.jpg,凯蒂·佩里(Katy Perry)-2.jpg,凯蒂·佩里(Katy Perry)-3.jpg

@GusDB,您好!

我将代码更改为此,但是什么也没有发生

<?php
/**
 * Created by Gus de Boer
 * 28-10-2014
 * Stackoverflow
 */

function scanParentDir(){
    $categories = scandir('categories ');
    foreach($categories as $cat){
        if(file_exists('categories /'.$cat) && $cat != '.' && $cat != '..'){
            changesNamesToSubParentDir($cat);
        }
    }
}

function changesNamesToSubParentDir($cat){
    $albums = scandir('categories /'.$cat);
    foreach($albums as $album){
        if(file_exists('categories /'.$cat.'/'.$album) && $album != '.' && $album != '..'){
            changesNamesToParentDir($album);
        }
    }
}

function changesNamesToParentDir($album){
    $files = scandir('categories /'.$cat.'/'.$album);
    foreach($files as $file){
        if(file_exists('categories /'.$cat.'/'.$album.'/'.$file) && $file != '.' && $file != '..'){
            $filename = pathinfo('categories /'.$cat.'/'.$album.'/'.$file);
            rename('categories /'.$cat.'/'.$album.'/'.$file,     'categories /'.$cat.'/'.$album.'/'.$album.$filename['basename']);
        }
    }
}
?>

非常感谢你。

古斯·布尔

您可以使用scandir()(http://php.net/manual/en/function.scandir.php)获取“名人”目录中每个目录的数组。

scandir('path-to-directory');

这将生成一个包含所有目录的数组。之后,您可以遍历它,然后对所有图像再次执行scandir()。

您可以使用rename()重命名文件(http://nl3.php.net/manual/en/function.rename.php

rename('path-to-file<oldname>', 'path-to-file<newname>');

您应该真正尝试先进行编码,然后再提出问题。还提供一个代码示例,其中包含您已经尝试过的内容。

希望这对您有用!

编辑:

这些功能将为您解决问题。这只是基本的重命名,您应该添加更多的检查和内容。

<?php
/**
 * Created by Gus de Boer
 * 28-10-2014
 * Stackoverflow
 */

function scanParentDir(){
    $directories = scandir('Categories/Celebrities');
    foreach($directories as $dir){
        if(file_exists('Categories/Celebrities/'.$dir) && $dir != '.' && $dir != '..'){
            changesNamesToParentDir($dir);
        }
    }
}

function changesNamesToParentDir($dir){
    $files = scandir('Categories/Celebrities/'.$dir);
    foreach($files as $file){
        if(file_exists('Categories/Celebrities/'.$dir.'/'.$file) && $file != '.' && $file != '..'){
            $filename = pathinfo('Categories/Celebrities/'.$dir.'/'.$file);
            rename('Categories/Celebrities/'.$dir.'/'.$file,     'Categories/Celebrities/'.$dir.'/'.$dir.$filename['basename']);
        }
    }
}
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

CMD迭代并递归重命名所有文件名,并将当前子目录文件夹追加到当前文件名

重命名不同子目录中的所有文件

重命名子目录中的所有文件

重命名子目录中的所有文件

将所有文件移动到以部分文件名命名的子目录中

对于目录,将具有子目录名称+旧文件名的子目录中的文件重命名为新目录

从所有子目录移动特定文件,并根据子目录重命名

遍历子目录,并将给定扩展名的所有文件重命名为相同的文件名

批量重命名子目录的所有 gif 文件 rename() php

使用“ mv”命令移动和重命名时,脚本会将其视为目录而不是新文件名

存在的所有子目录中的inno-setup更新文件

perl重命名:在子目录中的文件名之前添加一些内容

使用 Powershell 重命名当前目录中包含文件和子目录的所有文件夹名称

如何使用python遍历Google Cloud Storage子目录中的所有文件名?

在目录及其所有子目录中搜索文件名而不识别子目录中的文件

重命名所有子目录中的文件和文件夹以删除字符

搜索和重命名和MV所有目录和子目录中的文件

解压子目录中的所有文件,并在其原始目录后重命名

重命名目录和子目录中的所有文件

如何重命名(取消隐藏)目录中的所有文件和子目录?

bash - 遍历子目录、cat 文件并使用目录名重命名

使用Ruby重命名所有子目录

bash重命名文件/在文件名中添加整数,在多个子目录中具有各种扩展名

python重命名子目录中的所有文件

Python递归遍历所有子目录,并将文件名写入输出文件

递归输出所有子目录的文件名和文件大小?

将所有文件移动到文件名开头的子目录中

列出子目录中所有文件的创建日期和文件名

将递增值写入子目录中与文件名匹配的所有文件