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

使用Bash无需正则实现目录内文件名数字减1重命名的方法

无正则批量重命名实现方案

结论

不使用正则完全可以实现该需求。你提到的「提取文件名中的数字、转整数做减法再生成新文件名」是本需求的必要逻辑,但这个逻辑的实现不需要依赖正则表达式,用系统/语言内置的基础字符串处理功能就能完成。

Bash 环境实现(适配你当前写的shell循环)

针对纯数字加.json固定后缀的命名场景,直接用Bash原生参数扩展切割后缀即可,全程无正则:

for i in *.json; do
    # 内置字符串操作:删除文件名末尾的.json后缀,提取数字部分
    num=${i%.json}
    # 整数运算减1,拼接新文件名
    new_name="$((num - 1)).json"
    mv -- "$i" "$new_name"
done

注意:本写法适配你给出的「文件名仅为数字+固定后缀」的场景,如果目录下存在非数字命名的json文件,可以先加一层过滤逻辑再执行重命名,避免报错。

Python 环境实现

如果用Python处理,同样可以不用正则,依赖标准库的路径处理功能即可:

import os

for file_name in os.listdir("."):
    if file_name.endswith(".json"):
        # 拆分文件名和后缀
        num_part, suffix = os.path.splitext(file_name)
        # 转整数后减1,生成新文件名
        new_file_name = f"{int(num_part) - 1}{suffix}"
        os.rename(file_name, new_file_name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:54:00