You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量重命名CBZ文件:去除版本号前导零并转换格式

批量重命名CBZ文件解决方案

问题分析

你之前用的命令有两个关键问题:

  1. 正则表达式v0([1-9]+)仅能匹配v0后跟非零开头的数字(比如v04),无法覆盖v004这类多前导零的情况
  2. 多余的/e修饰符:该参数会把替换内容当作Perl代码执行,此处完全不需要,反而可能引发错误

正确的Perl版rename命令

如果你的系统使用的是Perl版本的rename(Debian/Ubuntu系默认),执行以下命令即可:

rename 's/ v0+([1-9]\d*)/, Volume $1/' *.cbz

正则逻辑说明:

  • v0+:匹配v后跟一个或多个连续的零
  • ([1-9]\d*):捕获第一个非零数字及其后续所有数字(比如从v004中提取4,从v012中提取12)
  • 替换为, Volume $1,保留捕获到的有效数字

跨系统兼容方案(mv+sed)

如果你的系统是RedHat/CentOS系(使用简化版rename),或者不想依赖Perl环境,用循环结合sed实现:

for file in *.cbz; do
    new_name=$(echo "$file" | sed -E 's/ v0+([1-9][0-9]*)/, Volume \1/')
    mv -v "$file" "$new_name"
done
  • -E让sed支持扩展正则,逻辑和上面一致
  • -v参数让mv输出重命名过程,方便核对结果

安全预览验证

执行重命名前,建议先预览操作结果,避免误改:

# Perl rename预览(仅输出操作,不实际修改)
rename -n 's/ v0+([1-9]\d*)/, Volume $1/' *.cbz

# mv+sed预览
for file in *.cbz; do echo "$file -> $(echo "$file" | sed -E 's/ v0+([1-9][0-9]*)/, Volume \1/')"; done

内容的提问来源于stack exchange,提问作者Novum Gain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 19:35:58