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

如何在Bash中为带分隔符的任意长度编号字母数字文件名补零?

为带连字符的编号文件名补零的CLI解决方案

我需要一种优雅的CLI方法,给任意长度、用连字符替代空格的编号字母数字文件名补零。

原文件列表示例:

1-file-name-of-one-length.mp3
2-shorter-file-name.mp3
3-really-really-really-long-file-name.mp3
...
10-another-file-name.mp3

转换后期望的效果:

01-file-name-of-one-length.mp3
02-shorter-file-name.mp3
03-really-really-really-long-file-name.mp3
...
10-another-file-name.mp3

我花了一天时间研究awk、bash和rename的补零方法,但现有资料大多假设文件名是纯数字或固定长度格式,这类场景可以用awk拆分重组分隔符间的字段。但我的文件名字符串长度未知,连字符分隔的字段数量也不确定。

我原本设想的解决方案是用for循环,逻辑为:读取文件名到第一个连字符前的部分,判断该位置的数字是一位数还是两位数,若是一位数就在前面插入一个'0'。

正确的实现命令

Renaud提供了可行的简单for循环语法(我自己尝试的代码会给两位数也补零,但这个代码能精准处理):

for f in [0-9]-*.mp3; do mv "$f" "0$f"; done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:07:04