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

Mac/Windows下将序列JPG文件从指定编号起始重命名的方法

文件批量重命名解决方案(OSX + Windows)

OSX(Bash 命令)

方案一:修正循环逻辑并保证文件顺序

你之前的脚本问题出在文件遍历顺序不是数字升序——OSX中for f in *会按字符串排序,导致10.jpg排在2.jpg前面,最终编号混乱。以下是修正后的脚本:

# 设置起始编号为83
start=83
# 用ls -v按数字升序遍历jpg文件,避免排序错乱
for f in $(ls -v *.jpg); do
    if [[ -f "$f" ]]; then
        mv "$f" "${start}.jpg"
        ((start++))
    fi
done

方案二:修改Stack论坛脚本的起始编号

针对你看到的cat -n脚本,只需给生成的编号加上偏移量82(原编号从1开始,1+82=83),同时保证文件排序正确:

ls -v *.jpg | cat -n | while read n f; do
    new_num=$((n + 82))
    mv "$f" "${new_num}.jpg"
done

Windows 批处理脚本

在CMD中执行以下脚本,可按数字顺序完成重命名:

@echo off
setlocal enabledelayedexpansion
set "start=83"
:: 从1到100循环遍历目标文件
for /l %%i in (1,1,100) do (
    if exist "%%i.jpg" (
        ren "%%i.jpg" "!start!.jpg"
        set /a start+=1
    )
)
endlocal

问题原因说明

  • 你最初的脚本里,for f in *的遍历顺序是字符串排序,导致文件顺序错乱,即使设置起始值为83也会出现编号错位;
  • Stack论坛的默认脚本用cat -n生成1开始的编号,只需添加偏移量就能调整起始值,但必须配合ls -v保证文件按数字顺序排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:35:56