PHP如何替换无固定规则文件名中的第二个下划线为指定字符
批量替换文件名第二个下划线为x的解决方案
以下是不同场景下可直接运行的实操方案,所有方案均支持上千文件批量处理,且只会替换第二个_字符:
1. 跨平台通用方案(Python,适配Windows/macOS/Linux)
不需要额外安装工具,跨系统兼容性最好:
import os # 替换为你存放目标文件的文件夹路径 folder_path = r"C:\你的文件路径" for filename in os.listdir(folder_path): # 跳过文件夹,只处理文件 file_fullpath = os.path.join(folder_path, filename) if not os.path.isfile(file_fullpath): continue # 按下划线最多拆分2次,精准定位第二个下划线位置 parts = filename.split('_', 2) if len(parts) < 3: # 下划线不足2个的文件跳过不处理 continue # 拼接生成新文件名 new_filename = f"{parts[0]}_{parts[1]}x{parts[2]}" # 重命名操作 os.rename( file_fullpath, os.path.join(folder_path, new_filename)
操作提示:运行前建议先备份文件,也可以先把
os.rename代码块替换为print(filename, "→", new_filename)预览修改结果,确认无误后再执行重命名逻辑。
2. Windows系统 PowerShell 方案
直接用系统自带功能,无需额外配置:
# 切换到目标文件所在文件夹 cd "C:\你的文件路径" Get-ChildItem -File | ForEach-Object { $parts = $_.Name -split '_', 3 if ($parts.Count -ge 3) { $newName = "$($parts[0])_$($parts[1])x$($parts[2])" Rename-Item -Path $_.FullName -NewName $newName } }
3. macOS/Linux 终端方案
一行命令即可完成操作:
# 先cd进入目标文件所在文件夹,再运行以下命令 for file in *; do if [[ -f "$file" ]]; then newfile=$(echo "$file" | sed 's/_/x/2'); mv "$file" "$newfile"; fi; done
预览修改结果的版本(不执行重命名):
for file in *; do if [[ -f "$file" ]]; then newfile=$(echo "$file" | sed 's/_/x/2'); echo "$file → $newfile"; fi; done
内容的提问来源于stack exchange,提问作者Mad Gemini
相关产品推荐
相关产品推荐

