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

Linux下如何在文件名中间添加连续序号并保留原文件信息

解决方案

要实现在文件名中间插入连续两位序号并保留原文件全部信息,可以通过Bash的参数扩展提取原文件名的关键部分,结合排序确保序号连续对应,以下是修正后的脚本:

#!/bin/bash

a=1
# 对文件进行自然排序,保证序号按原文件时间/名称顺序分配
for i in $(ls -v Cust*); do
  # 提取文件名前缀(第一个"."之前的内容)
  prefix="${i%%.*}"
  # 提取前缀后的剩余部分(包含日期、时间、后缀)
  rest="${i#*.}"
  # 拼接新文件名:前缀 + 两位序号 + 原剩余部分
  new_filename="${prefix}.$(printf "%02d" "$a").${rest}"
  # 执行重命名,-i选项防止意外覆盖已有文件
  mv -i -- "$i" "$new_filename"
  # 序号自增
  ((a++))
done

关键说明

  1. 文件排序:
    使用ls -v Cust*进行自然排序,会按文件名中的数字(如时间戳1349、1356、1527)从小到大排列,避免序号与原文件顺序错乱。

  2. 文件名拆分:

    • ${i%%.*}:从文件名末尾删除最长的.*匹配,得到前缀Customer_Branch_Record。
    • ${i#*.}:从文件名开头删除最短的*.匹配,得到原文件的日期、时间及后缀部分(如20230303.1349.DAT)。
  3. 序号格式化:
    printf "%02d" "$a"生成两位固定长度的序号,不足两位时自动补0(如1→01、2→02)。

执行效果

运行脚本后,原文件会被重命名为:

Customer_Branch_Record.01.20230303.1349.DAT
Customer_Branch_Record.02.20230303.1356.DAT
Customer_Branch_Record.03.20230303.1527.DAT

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:43:15