信息发布→ 登录 注册 退出

php如何批量替换文件名前缀_php遍历目录修改名称与正则匹配应用

发布时间:2025-11-27

点击量:
先遍历目录文件,再用正则替换前缀。使用scandir()获取文件列表,跳过.和..,遍历中用preg_match匹配old_开头的文件名,捕获后缀并组合new_前缀生成新名,检查目标是否存在后执行rename重命名,避免覆盖;建议递归处理子目录、过滤扩展名、记录日志,并通过命令行传参提升复用性,操作前需备份或预览确认。

php如何批量替换文件名前缀_php遍历目录修改名称与正则匹配应用

在PHP中批量替换文件名前缀,通常涉及遍历指定目录下的所有文件,使用正则表达式匹配原有前缀,并将其替换为新的前缀。这个过程适用于需要统一重命名大量文件的场景,比如项目重构、文件归档等。

遍历目录获取文件列表

使用PHP的scandir()DirectoryIterator可以轻松读取目录中的文件。注意跳过...这两个特殊目录项。

示例代码:

$dir = '/path/to/your/directory';
$files = scandir($dir);

foreach ($files as $file) {
    if ($file === '.' || $file === '..') {
        continue;
    }

    $filePath = $dir . '/' . $file;
    if (is_file($filePath)) {
        // 处理文件重命名
    }
}

使用正则匹配并替换前缀

假设你想将所有以old_开头的文件名改为new_开头,可以用preg_replace()进行匹配替换。

N世界 N世界

一分钟搭建会展元宇宙

N世界 138 查看详情 N世界

关键点:

  • 正则模式:/^old_(.+)$/ 表示以 old_ 开头,保留后面部分
  • 替换为:new_$1,其中 $1 是捕获的剩余文件名
  • 确保新文件名不存在,避免覆盖
$oldPrefix = 'old_';
$newPrefix = 'new_';
$pattern = '/^' . preg_quote($oldPrefix, '/') . '(.+)$/';

foreach ($files as $file) {
    if ($file === '.' || $file === '..' || !is_file($dir . '/' . $file)) {
        continue;
    }

    if (preg_match($pattern, $file, $matches)) {
        $newFileName = $newPrefix . $matches[1];
        $oldPath = $dir . '/' . $file;
        $newPath = $dir . '/' . $newFileName;

        if (!file_exists($newPath)) {
            rename($oldPath, $newPath);
            echo "已重命名: $file → $newFileName\n";
        } else {
            echo "跳过: $newFileName 已存在\n";
        }
    }
}

增强功能建议

实际应用中可加入以下改进:

  • 递归处理子目录:使用RecursiveDirectoryIterator + RecursiveIteratorIterator
  • 添加文件扩展名过滤(如只处理 .txt 或 .jpg)
  • 记录操作日志或支持撤销功能
  • 通过命令行参数传入路径和前后缀,提升复用性
注意:执行重命名前建议先备份文件,或先打印出将要修改的名称进行确认。 基本上就这些,掌握目录遍历与正则替换的组合,就能灵活应对各种批量重命名需求。

以上就是php如何批量替换文件名前缀_php遍历目录修改名称与正则匹配应用的详细内容,更多请关注其它相关文章!


相关文章: SteamMachine定价或为699美元 大家想入手吗?  京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比  如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】  Eclipse怎么运行工程_Eclipse工程运行配置说明  c++ 获取系统当前时间 c++时间戳获取方法  Golang并发任务中错误如何聚合_Golang goroutine error收集方式  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  58动漫网在线官方网 58动漫网正版动漫入口网址  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  免费抖音短视频入口_抖音网页版短视频免费通道  sublime怎么格式化代码_sublime代码美化与一键排版插件配置  ArrayList与LinkedList操作复杂度详解:遍历与修改  Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】  b站怎么删除评论_b站评论管理与删除操作  护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?  谷歌google账号怎么注册账号 谷歌账号注册官方流程  Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】  sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  支付宝如何管理隐私设置_支付宝隐私保护的配置技巧  微博网页版主页入口 微博官方网站免登录访问  深入理解与实现最大堆的Heapify过程:常见错误与修正  J*aScript Promise链中如何正确终止后续.then执行并处理错误  蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台  京东单号查询入口_京东快递订单追踪入口  C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程  谷歌google账号注册详细步骤 谷歌账号注册官方教程  Go Martini框架:动态服务解码后的图片内容  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  必由学在线入口 必由学网页版快速登录入口  J*a初级项目如何接入API数据_第三方接口请求与响应解析  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  excel如何生成目录 excel一键生成工作表目录超链接  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  J*aScript实现单选按钮与关联输入框的联动禁用教程  Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口  优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  在哪找SublimeJ远程工具_SFTP插件配置教程  126邮箱账号注册 电脑版登录入口  Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】  QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道  内存检查:在VS Code中调试C++时的内存视图 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!