请求文件名重命名正则表达式:移除末尾段前置零
批量重命名:移除文件名最后段的前置零并保留两位有效数字
PowerShell 实现
直接遍历目标文件,用正则匹配并格式化数字:
Get-ChildItem -Filter "*_*[A-Z]0[0-9][0-9]" | ForEach-Object { $newName = $_.Name -replace '^(.*[A-Z])(\d{3})$', { $matches[1] + ([int]$matches[2] | ForEach-Object { "{0:D2}" -f $_ }) } Rename-Item -Path $_.FullName -NewName $newName }
逻辑:捕获文件名中字母前缀(比如A/B)和后面的三位数字,把数字转成整数自动去前置零,再格式化为两位数字(不足两位补零)。
Python 实现
适合跨平台使用,代码可读性强:
import os import re # 匹配最后一段为字母+三位数字的文件名 file_pattern = re.compile(r'^(.*[A-Z])(\d{3})$') for filename in os.listdir('.'): match_result = file_pattern.match(filename) if match_result: prefix_part = match_result.group(1) num_part = int(match_result.group(2)) # 格式化数字为两位,自动补零或去多余前置零 new_filename = f"{prefix_part}{num_part:02d}" os.rename(filename, new_filename)
Bash 实现(Linux/macOS)
用Perl版本的rename命令快速处理:
rename 's/(.*[A-Z])(\d{3})/$1 . sprintf("%02d", $2)/e' *_[A-Z]0[0-9][0-9]
逻辑:通过正则捕获字母前缀和三位数字,执行Perl代码将数字格式化为两位后替换。
如果你的文件名前缀规则有变化,只需要调整正则中捕获前缀的部分即可,核心都是把最后三位数字转成两位有效数字(去多余前置零,不足两位补零)。
内容的提问来源于stack exchange,提问作者schnarkle
相关产品推荐
相关产品推荐

