请求编写批量重命名文件脚本:保留LC前缀交换分隔符前后内容
批量重命名文件:交换分隔符前后内容的实现方案
没问题,这个需求很明确,我给你准备了几个不同平台的实现方案,你可以根据自己的操作系统来选择,都能精准完成你要的「保留前3个字符LC ,交换-分隔符前后内容」的要求:
一、跨平台Python脚本(推荐,Windows/macOS/Linux通用)
这个方案兼容性最好,不管你用什么系统都能跑,而且逻辑清晰,容易调整:
- 把下面的代码保存为
rename_files.py,放到你要处理文件的文件夹里(或者修改脚本里的target_dir路径) - 先运行预览模式(脚本默认是打印新文件名,不实际重命名),确认没问题后,把
print(f"将重命名: {old_name} → {new_name}")这行注释掉,取消os.rename(old_path, new_path)的注释
import os # 目标文件夹路径,当前目录就用'.' target_dir = '.' for old_name in os.listdir(target_dir): # 跳过文件夹,只处理文件 old_path = os.path.join(target_dir, old_name) if not os.path.isfile(old_path): continue # 检查文件名是否符合格式:以"LC "开头,且包含" - "分隔符 if not old_name.startswith("LC ") or " - " not in old_name: continue # 拆分文件名和扩展名 filename, ext = os.path.splitext(old_name) # 去掉前3个字符"LC ",获取后面的内容 content = filename[3:] # 按" - "拆分,只拆一次(避免内容里有相同分隔符) try: part1, part2 = content.split(" - ", 1) except ValueError: # 如果拆分失败(比如多个分隔符但无法分成两部分),跳过该文件 print(f"跳过不符合格式的文件: {old_name}") continue # 构建新文件名 new_name = f"LC {part2} - {part1}{ext}" new_path = os.path.join(target_dir, new_name) # 检查新文件是否已存在,避免覆盖 if os.path.exists(new_path): print(f"跳过:{new_name} 已存在") continue # 预览模式:打印重命名信息,确认后取消下面一行注释,注释掉print行 print(f"将重命名: {old_name} → {new_name}") # os.rename(old_path, new_path)
二、Windows PowerShell脚本
如果你用Windows,直接用PowerShell更方便,不用装Python:
- 打开PowerShell,切换到目标文件夹(比如
cd D:\Your\File\Folder) - 复制下面的代码运行,先看预览(加了
-WhatIf参数,不会实际重命名),确认没问题后去掉-WhatIf
Get-ChildItem -Filter "LC *.pdf" | ForEach-Object { # 匹配文件名格式:LC 内容1 - 内容2 if ($_.BaseName -match '^LC (.+) - (.+)$') { $newName = "LC $($matches[2]) - $($matches[1])$($_.Extension)" # 预览模式,去掉-WhatIf执行实际重命名 Rename-Item -Path $_.FullName -NewName $newName -WhatIf } }
三、Linux/macOS Bash脚本
对于Linux或macOS用户,用终端的Bash脚本最快捷:
- 打开终端,切换到目标文件夹(
cd /path/to/your/folder) - 把下面的代码保存为
rename.sh,然后运行chmod +x rename.sh赋予执行权限 - 先运行
./rename.sh看预览(用echo打印),确认后把echo换成mv
#!/bin/bash # 遍历当前目录下所有以"LC "开头的pdf文件 for file in "LC "*.pdf; do # 跳过不存在的文件(避免通配符不匹配的情况) [ -f "$file" ] || continue # 拆分文件名和扩展名 filename="${file%.*}" ext="${file##*.}" # 去掉前3个字符"LC " content="${filename:3}" # 检查是否包含" - "分隔符 if [[ "$content" == *" - "* ]]; then # 拆分分隔符前后的内容 part1="${content%% - *}" part2="${content##* - }" new_filename="LC $part2 - $part1.$ext" # 预览模式,确认后把echo换成mv -n(-n避免覆盖) echo "重命名: $file → $new_filename" # mv -n "$file" "$new_filename" fi done
重要注意事项
- 先备份文件:不管用哪个方案,都建议先把要处理的文件复制一份备份,避免意外
- 先预览再执行:所有脚本都提供了预览模式,一定要先确认重命名结果符合预期,再执行实际的重命名操作
- 跳过不符合格式的文件:脚本会自动跳过不符合
LC X - Y.ext格式的文件,不会误处理
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

