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

请求优化Bash脚本:按修改日期重命名MP3并添加递增后缀

按修改日期批量重命名MP3并添加递增后缀

你的脚本存在几个关键问题:

  • bash中变量赋值无需set命令,计数器递增的语法错误
  • 文件存在判断逻辑错误,未考虑完整的目标文件名格式
  • 全局计数器无法实现同一日期内的独立递增

以下是修正后的脚本,使用关联数组按日期维护独立计数器,确保同一修改日期的文件后缀从1开始递增:

cd "/volume1/music/"
# 声明关联数组,用于存储每个日期的当前计数
declare -A date_counter

for file in *.mp3; do
    # 获取文件的修改日期(格式YYYYMMDD)
    cdate=$(date -r "$file" +"%Y%m%d")
    
    # 如果该日期还没有计数器,初始化为1
    if [[ -z "${date_counter[$cdate]}" ]]; then
        date_counter[$cdate]=1
    fi
    
    # 构建新文件名
    new_name="${cdate}_${date_counter[$cdate]}.mp3"
    
    # 先打印命令确认(测试阶段用,确认无误后去掉echo)
    echo mv "$file" "$new_name"
    
    # 当前日期的计数器加1,为下一个同日期文件做准备
    ((date_counter[$cdate]++))
done

说明

  1. 关联数组date_counter会为每个修改日期单独记录当前的后缀数字,避免不同日期的文件互相干扰
  2. 测试阶段保留echo,可以先查看所有重命名操作是否符合预期,确认后再删除echo执行实际重命名
  3. 如果目录中存在子目录,*.mp3只会匹配当前目录下的MP3文件,不会递归处理子目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:30:31