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

编写Bash脚本:基于最后创建目录生成递增命名的新目录

Bash脚本实现递增命名目录生成

完整脚本示例

#!/bin/bash

TARGET_DIR="output"

# 查找output下所有5位数字命名的目录,排序后取最后一个
last_dir=$(find "$TARGET_DIR" -maxdepth 1 -type d -name '[0-9][0-9][0-9][0-9][0-9]' | sort | tail -1)

if [ -z "$last_dir" ]; then
    # 无匹配目录时从00001开始
    new_dir_name="00001"
else
    # 提取纯目录名,转十进制整数后加1,再格式化回5位带前导零的字符串
    last_num=$(basename "$last_dir")
    new_num=$((10#$last_num + 1))
    new_dir_name=$(printf "%05d" "$new_num")
fi

# 创建新目录
mkdir -p "$TARGET_DIR/$new_dir_name"
echo "Created directory: $TARGET_DIR/$new_dir_name"

关键细节说明

  • 用find替代ls:避免ls输出处理时遇到特殊字符(如空格、换行)的问题,同时精准过滤出5位数字命名的目录。
  • 十进制解析:10#$last_num强制把以0开头的数字字符串按十进制解析,防止被当成八进制导致报错(比如00008在八进制中无效)。
  • 格式化输出:printf "%05d"确保新目录名始终是5位长度,不足补前导零。

原有命令的问题修正

你之前用ls -t是按修改时间排序,但需求是按数字递增命名,应该按名称排序而非修改时间。另外直接处理ls输出的可靠性差,改用find更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:40:31