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

实现Bash重命名脚本duplq.sh:按参数批量修改文本文件名

实现批量重命名文本文件的Bash脚本 duplq.sh

我来帮你搞定这个批量重命名的Bash脚本,完全贴合你描述的需求——给当前目录下的文本文件按指定规则批量改名,比如执行duplq.sh pic 0 3时,pic0.txt变pic3.txt、pic1.txt变pic4.txt,以此类推。

下面是完整的脚本代码:

#!/bin/bash

# 参数检查:确保传入3个参数
if [ $# -ne 3 ]; then
    echo "用法: $0 <前缀> <起始数字> <偏移量>"
    echo "示例: $0 pic 0 3"
    exit 1
fi

PREFIX="$1"
START_NUM="$2"
OFFSET="$3"

# 验证第二个和第三个参数是正整数
if ! [[ "$START_NUM" =~ ^[0-9]+$ ]] || ! [[ "$OFFSET" =~ ^[0-9]+$ ]]; then
    echo "错误: 第二个和第三个参数必须是正整数"
    exit 1
fi

# 遍历匹配前缀+数字+.txt的文件,按数字升序处理
for file in "$PREFIX"*.txt; do
    # 提取文件名中的数字部分
    if [[ "$file" =~ ^$PREFIX([0-9]+)\.txt$ ]]; then
        CURRENT_NUM="${BASH_REMATCH[1]}"
        # 只处理数字大于等于起始数字的文件
        if [ "$CURRENT_NUM" -ge "$START_NUM" ]; then
            NEW_NUM=$((CURRENT_NUM + OFFSET))
            NEW_FILE="$PREFIX$NEW_NUM.txt"
            # 检查目标文件是否已存在,避免意外覆盖
            if [ -f "$NEW_FILE" ]; then
                echo "警告: 目标文件 $NEW_FILE 已存在,跳过 $file"
                continue
            fi
            # 执行重命名并显示过程
            mv -v "$file" "$NEW_FILE"
        fi
    fi
done

脚本核心逻辑拆解

  • 参数校验:先检查是否传入了3个必要参数,再验证第二、三个参数是正整数,避免无效输入搞砸脚本运行。
  • 精准匹配文件:用正则表达式^$PREFIX([0-9]+)\.txt$精准提取文件名里的数字部分,只处理符合前缀+数字+.txt格式的文本文件,不会误改其他文件。
  • 重命名规则:只有文件名中数字大于等于起始数字的文件才会被处理,新数字就是原数字直接加上偏移量——完全符合你给出的示例逻辑(0+3=3,1+3=4)。
  • 安全防护:重命名前会检查目标文件是否存在,避免不小心覆盖已有的文件;同时用mv -v显示每一步的重命名操作,方便你确认执行结果。

使用步骤

  1. 把上面的代码保存为duplq.sh文件。
  2. 给脚本添加执行权限:
    chmod +x duplq.sh
    
  3. 按需求执行脚本,比如你提到的示例:
    ./duplq.sh pic 0 3
    

额外注意点

  • 脚本只会处理当前目录下的文件,不会递归处理子目录里的文件。
  • 就算文件名里有空格或者特殊字符,脚本也能正常处理,因为我们全程用双引号包裹了变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:53:02