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

Bash脚本:修改路径中各目录首字母为小写(Bitbucket Pipeline用)

解决路径目录首字母转小写的问题

方法1:使用GNU Sed(适配Bitbucket Pipeline环境)

你原来的sed命令问题在于没正确使用大小写转换的扩展语法,也没通过捕获组单独处理大写字母。正确命令如下:

Line="database/Seeders/Entities/Users/Earnings/UserEarningsReportSeeder"
echo "$Line" | sed -E 's/\/([A-Z])/\/\L\1/g'
  • -E 启用扩展正则,允许用()捕获匹配内容
  • \/([A-Z]) 匹配/后的大写字母并捕获到分组1
  • \/\L\1 替换为/加上分组1内容的小写形式(\L是GNU Sed的扩展语法,用于将后续字符转小写)

执行后会输出目标结果:database/seeders/entities/users/earnings/userEarningsReportSeeder

方法2:纯Bash实现(不依赖外部工具)

如果环境缺少GNU Sed,也可以用Bash内置语法完成:

Line="database/Seeders/Entities/Users/Earnings/UserEarningsReportSeeder"
IFS='/' read -ra parts <<< "$Line"
result=""
for part in "${parts[@]}"; do
    lower_first="${part,}" # Bash 4+支持的语法,将字符串首字母转小写
    result+="${result:+\/}$lower_first"
done
echo "$result"
  • 用IFS='/'将路径拆分为数组元素
  • 遍历每个元素,通过${part,}转换首字母为小写
  • 重新拼接成完整路径

原命令失效的原因

你写的sed 's/\/[A-Z]/\/L&/g'只是把/X替换成/L/X(&代表整个匹配内容),根本没有实现大小写转换,而且\L的用法错误,必须结合捕获组才能单独转换大写字母部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:40:46