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

使用命令行参数实现Bash脚本批量重命名文本文件

实现duplq.sh批量重命名脚本

没问题,我帮你写一个完全符合需求的duplq.sh脚本,还加了不少健壮性检查,避免意外覆盖或者参数错误的问题。

完整脚本代码

#!/bin/bash

# 检查参数数量是否正确
if [ $# -ne 3 ]; then
    echo "错误:请提供3个参数!用法:$0 <前缀> <起始数字> <偏移量>"
    exit 1
fi

prefix="$1"
start_num="$2"
offset="$3"

# 检查起始数字和偏移量是否为正整数(如果需要允许起始数字为0,可把正则改成^[0-9]+$)
if ! [[ "$start_num" =~ ^[1-9][0-9]*$ ]] || ! [[ "$offset" =~ ^[1-9][0-9]*$ ]]; then
    echo "错误:第二个和第三个参数必须是正整数!"
    exit 1
fi

# 遍历当前目录下所有以指定前缀开头的txt文件
for file in "${prefix}"*.txt; do
    # 跳过不存在的文件(避免没有匹配文件时遍历到字面量)
    if [ ! -f "$file" ]; then
        continue
    fi

    # 提取文件名中的数字部分,仅保留严格符合「前缀+数字+.txt」格式的文件
    num=$(echo "$file" | sed -E "s/^${prefix}([0-9]+)\.txt$/\1/")
    if [ -z "$num" ]; then
        continue
    fi

    # 只处理数字大于等于起始数字的文件
    if [ "$num" -lt "$start_num" ]; then
        continue
    fi

    # 计算新文件名的数字部分
    new_num=$((num + offset))
    new_file="${prefix}${new_num}.txt"

    # 检查新文件是否已存在,避免意外覆盖
    if [ -f "$new_file" ]; then
        echo "警告:文件 $new_file 已存在,跳过 $file 的重命名"
        continue
    fi

    # 执行重命名并输出日志
    mv "$file" "$new_file"
    echo "已重命名:$file → $new_file"
done

脚本逻辑说明

我给你拆解下每个部分的作用:

  • 参数校验:首先检查是否传入了3个参数,然后验证第二个、第三个参数是正整数(如果你的需求里允许起始数字为0,把正则改成^[0-9]+$即可),不符合就提示错误并退出。
  • 文件遍历:只遍历当前目录下以指定前缀开头的.txt文件,并且会跳过不存在的文件(防止没有匹配文件时处理pic*.txt这个字面量)。
  • 格式过滤:用sed提取文件名里的数字部分,只有严格符合「前缀+数字+.txt」格式的文件才会被处理,比如pic_0.txt或者picabc.txt这类不符合的会被跳过。
  • 范围控制:只处理数字大于等于起始数字的文件,比如你传入起始数字0,就从pic0.txt开始处理;如果传入起始数字2,就只会处理pic2.txt及之后的文件。
  • 安全重命名:重命名前会检查新文件名是否已存在,如果存在就跳过并给出警告,避免不小心覆盖已有文件。

使用示例

  1. 先给脚本加执行权限:
chmod +x duplq.sh
  1. 执行你提到的命令:
./duplq.sh pic 0 3

执行后你会看到类似这样的输出:

已重命名:pic0.txt → pic3.txt
已重命名:pic1.txt → pic4.txt
已重命名:pic2.txt → pic5.txt
已重命名:pic3.txt → pic6.txt

注意事项

  • 脚本只会处理当前目录下的文件,不会递归处理子目录里的文件。
  • 如果有文件不符合「前缀+数字+.txt」的格式,会自动跳过,不会误处理。
  • 重命名操作是不可逆的,建议执行前先备份文件,或者先运行脚本看输出日志确认没问题再实际执行(可以先把mv命令改成echo mv来做模拟测试)。

内容的提问来源于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:55:42