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

macOS下使用xld命令行结合cue文件分割转换ape音频问题求助

XLD 整轨音频批量分割转FLAC命令修复方案

错误原因

你写的命令存在两处核心问题:

  1. 单引号嵌套冲突:sh -c的参数用单引号包裹的前提下,内部sed的替换规则又用了单引号,会提前截断shell命令字符串,导致解析完全错误。
  2. 逻辑顺序错误:你用管道把sed和xld串联,但xld的-c参数需要直接传入cue文件路径,不是从标准输入读取内容,原写法实际是把xld的输出传给sed,和你要实现的「替换ape后缀为cue作为参数」逻辑完全相反。

可用命令

最优写法(无需sed,用shell原生参数扩展)

find . -name "*.ape" -exec sh -c 'cue_file="${1%.ape}.cue"; xld "$1" -f flac -c "$cue_file"' _ {} \;

实现逻辑:

  • 用${1%.ape}直接删除ape文件路径末尾的.ape后缀,拼接.cue直接得到对应cue文件路径,性能更好也不会有引号冲突
  • 所有变量用双引号包裹,兼容带空格、特殊字符的路径

兼容sed的写法

如果你需要保留sed逻辑,可用以下命令,用双引号包裹sed规则避免引号冲突,同时用$()捕获sed输出作为参数:

find . -name "*.ape" -exec sh -c 'cue_file=$(echo "$1" | sed "s/\.ape$/.cue/"); xld "$1" -f flac -c "$cue_file"' _ {} \;

鲁棒增强版(跳过无对应cue的文件)

增加存在性判断,避免cue文件不存在时报错终止:

find . -name "*.ape" -exec sh -c 'cue_file="${1%.ape}.cue"; [ -f "$cue_file" ] && xld "$1" -f flac -c "$cue_file" || echo "跳过 $1:未找到对应cue文件"' _ {} \;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:01