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

Shell脚本故障:根据文件名日期日数创建late_inzending目录失败

修复Shell脚本:根据子文件夹日期创建late_inzending目录

原脚本的问题

  • 遍历对象错误:原脚本遍历*/(即Mainfolder下的Jan、Feremans等目录),但日期信息存在于这些目录的子文件夹中,导致根本提取不到有效日期值。
  • 目录创建路径错误:mkdir late_inzending会在脚本执行的当前目录(Mainfolder)创建文件夹,而非在符合条件的子目录(如Jan)下生成目标目录。
  • 字段提取逻辑无效:因为遍历的是不含日期的上层目录,cut命令无法获取到正确的日期片段。

修正后的脚本

# 遍历Mainfolder下的所有一级子目录(Jan、Feremans等)
for parent_dir in */; do
    # 进入当前一级子目录,遍历里面的带日期的子文件夹
    for sub_dir in "$parent_dir"*/; do
        # 从子文件夹名中提取最后一个下划线后的日期字符串
        date_str=$(basename "$sub_dir" | awk -F '_' '{print $NF}')
        # 从日期字符串中提取日部分
        day=$(echo "$date_str" | awk -F '-' '{print $3}')
        # 判断日数是否大于11,满足则创建目录
        if (( day > 11 )); then
            mkdir -p "$parent_dir/late_inzending"
            # 找到符合条件的项后终止内层循环,避免重复创建目录
            break
        fi
    done
done

修正说明

  1. 双层遍历逻辑:先遍历Mainfolder下的一级子目录,再遍历每个一级子目录下的带日期子文件夹,确保能定位到含日期信息的目标文件夹。
  2. 精准提取日期:用basename获取子文件夹名,结合awk分割出最后一个下划线后的日期字符串,再进一步提取日部分。
  3. 正确创建路径:通过"$parent_dir/late_inzending"指定创建路径,确保目录生成在对应一级子目录下;mkdir -p参数避免目录已存在时抛出错误。
  4. 避免重复操作:内层循环找到第一个符合条件的子文件夹后就终止,防止重复创建同一个late_inzending目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:35:28