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

如何在Bash中将DD.MM.YYYY-X格式的文件夹重命名为YYMMDDIX格式?

Bash批量重命名特定格式文件夹

针对格式为DD.MM.YYYY-X的文件夹,要批量替换为YYMMDDIX格式(YY为年份后两位,DD/MM保持原内容,I为固定标识,X为原索引),可以用以下两种方法实现:

方法一:Bash原生循环(无需额外工具)

先切换到目标目录,执行以下脚本:

for dir in [0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]-[0-9]; do
    if [[ $dir =~ ^([0-9]{2})\.([0-9]{2})\.([0-9]{2})([0-9]{2})-([0-9])$ ]]; then
        new_name="${BASH_REMATCH[3]}${BASH_REMATCH[2]}${BASH_REMATCH[1]}I${BASH_REMATCH[5]}"
        # 先测试替换结果,没问题再去掉echo
        echo mv "$dir" "$new_name"
        # mv "$dir" "$new_name"
    fi
done

说明:

  • 通配符[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]-[0-9]先筛选出符合格式的文件夹,避免处理无关目录
  • 正则分组捕获:
    • BASH_REMATCH[1]:原名称中的DD
    • BASH_REMATCH[2]:原名称中的MM
    • BASH_REMATCH[3]:年份的后两位(YY)
    • BASH_REMATCH[5]:原索引X
  • 先执行带echo的测试命令,确认替换结果正确后,再注释掉echo执行真实重命名

方法二:用Perl版rename命令(更简洁)

大部分Linux发行版默认自带Perl版rename,执行以下命令:

# 先测试替换结果
rename -n 's/^(\d{2})\.(\d{2})\.(\d{2})(\d{2})-(\d)$/$3$2$1I$5/' [0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]-[0-9]
# 确认无误后去掉-n执行
# rename 's/^(\d{2})\.(\d{2})\.(\d{2})(\d{2})-(\d)$/$3$2$1I$5/' [0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]-[0-9]

说明:

  • -n参数用于模拟替换,仅输出结果不执行重命名,适合测试
  • 正则替换规则:用捕获分组提取DD、MM、YY、X,按YYMMDDIX的顺序拼接新名称

注意事项:

  • 如果目标目录存在重名文件夹,重命名会失败,需提前排查处理
  • 确保使用的是Perl版rename(部分系统可能默认是util-linux版,语法不同,可通过rename --version确认)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:50:25