2

我正在用 xld 编写一个用于批处理音频文件的脚本。我想找到未拆分的专辑,将它们拆分并使用适当的标签将它们转换为 flac。

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

此命令行正在将音频转换为 flac,但我必须在 xld 中添加“-c filename.cue”选项以使其拆分文件。

寻找 。-name "*.ape" -exec sh -c 'exec echo $1 | sed 's/.ape/.cue/'' _ {} ;

此命令行向我显示 .cue 文件的路径

寻找 。-name "*.ape" -exec sh -c 'exec xld "$1" -f flac -c $1 | sed 's/.ape/.cue/'' _ {} ;

这个命令行不起作用,xld 说他没有找到 de cue 文件。我认为这只是一个语法问题。

感谢您的帮助

4

1 回答 1

2

我没有像往常一样在计算机上进行测试,但是bash您可以像这样替换变量的尾随部分:

thing="fred.ape"
echo ${thing/%.ape/.cue}
fred.cue

它被称为“参数替换/扩展” ,并在此处通过示例进行解释。

因此,基于此,您需要执行以下操作bash

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

就个人而言,我会像这样与GNU Parallel 并行执行所有这些操作:

parallel xld {} -f flac -c {.}.cue ::: *.ape

您可以使用homebrew安装它:

brew install parallel
于 2021-11-07T18:27:41.223 回答