使用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
相关产品推荐
相关产品推荐

