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

如何用Bash脚本给批量图片按自定义起始时间逐秒递增重命名

Bash脚本实现图片按自定义起始时间逐秒递增重命名

以下是满足需求的Bash脚本,支持指定自定义起始时间,将有序编号的图片按「DD-MM-YYYY HH-MM-SS.png」格式逐秒递增重命名:

脚本代码

#!/bin/bash

# 参数检查
if [ $# -lt 1 ]; then
    echo "用法: $0 <起始时间> [图片匹配模式]"
    echo "示例: $0 '19-10-2022 17-35-10' '*.png'"
    exit 1
fi

START_TIME="$1"
IMAGE_PATTERN="${2:-*.png}"

# 将输入的时间格式转换为date可识别的格式,再转成Unix时间戳
FORMATTED_START=$(echo "$START_TIME" | sed -E 's/([0-9]{2})-([0-9]{2})-([0-9]{4})/\3-\2-\1/; s/-/:/g')
TIMESTAMP=$(date -d "$FORMATTED_START" +%s)

# 验证时间戳有效性
if [ -z "$TIMESTAMP" ]; then
    echo "错误: 起始时间格式错误,请使用 'DD-MM-YYYY HH-MM-SS' 格式"
    exit 1
fi

# 按自然数字顺序遍历图片文件
for img in $(ls -v $IMAGE_PATTERN); do
    # 生成目标文件名
    NEW_NAME=$(date -d "@$TIMESTAMP" +"%d-%m-%Y %H-%M-%S.png")
    
    # 避免覆盖已存在文件
    if [ -f "$NEW_NAME" ]; then
        echo "警告: $NEW_NAME 已存在,跳过 $img"
        continue
    fi
    
    mv "$img" "$NEW_NAME"
    echo "已重命名: $img -> $NEW_NAME"
    # 时间戳逐秒递增
    TIMESTAMP=$((TIMESTAMP + 1))
done

使用说明

  1. 保存脚本:将上述代码保存为rename_images.sh,并赋予执行权限:
    chmod +x rename_images.sh
    
  2. 基础用法:指定起始时间,重命名当前目录下所有PNG图片:
    ./rename_images.sh '19-10-2022 17-35-10'
    
  3. 自定义图片类型:如果是JPG图片,可添加第二个参数:
    ./rename_images.sh '19-10-2022 17-35-10' '*.jpg'
    

关键特性

  • 有序遍历:通过ls -v实现自然数字排序,确保1.png、2.png...依次处理
  • 时间递增:基于Unix时间戳逐秒累加,避免日期时间计算的复杂逻辑
  • 安全校验:检查目标文件是否存在,防止覆盖已有数据
  • 格式兼容:自动转换输入时间格式,适配date命令的识别规则

内容的提问来源于stack exchange,提问作者J. Castelli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:20:48