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

Shell如何为匹配.md模式的行追加后缀,文件名取自另一配置文件

Shell批量修改同步文件内容解决方案

实现思路

你的思路是对的,外层循环读取stapel_old里的学科名,处理对应同步文件即可。不需要嵌套循环逐行读取同步文件内容,直接用sed的模式匹配+行尾追加功能即可实现需求,写法更简洁也不易出错。

可直接使用的代码

将以下代码插入到原有代码的末尾(即(tput sgr 0)行之后)即可:

# 批量处理所有学科的同步文件
# 跳过stapel_old最后一行的文件夹数量统计值
head -n -1 olddata/stapel_old | while IFS= read -r subject
do
    # 跳过空行避免生成无效文件名
    [ -z "$subject" ] && continue
    target_file="olddata/${subject}_old_sync"
    # 匹配含.md后缀的行,末尾追加:::#a1,原地修改文件
    sed -i '/\.md/s/$/:::#a1/' "$target_file"
done

注意事项

如果你是在macOS系统运行,sed的原地修改参数需要额外加空字符串,将对应行改为:

sed -i '' '/\.md/s/$/:::#a1/' "$target_file"

相比原有写法的优势

  • 仅需一层循环,无需单独统计同步文件行数,sed会自动遍历所有行完成匹配追加
  • 避免了逐行读取内容再替换的写法,不会因为文件名含特殊字符、空格出现匹配错误
  • 仅调用一次sed即可完成单个同步文件的修改,运行效率更高
  • stapel_old文件全程仅做读取操作,不会修改原有内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:15:01