从终端批量转换并分割 .ape 和 .cue 到 .flac 并存放在不同的文件夹中

从终端批量转换并分割 .ape 和 .cue 到 .flac 并存放在不同的文件夹中

我有一个 44GB(是的,四十四)个.apeCD 文件文件夹。每个.ape都是完整的 CD,并且通常.cue每个都有一个文件.ape。我需要转换但不需要拆分它们,因为没有提示数据可供参考。其中还有一些.jpgs 和.logs,我不关心。如果tree命令输出有助于直观地了解这一点,请看这里:

├── Philips Mozart Collection - 180 CD
│   │   ├── box01-Symphonies
│   │   │   ├── 1B.jpg
│   │   │   ├── 1F.jpg
│   │   │   ├── cd01
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 1) - Neville Mariner, Academy of St. Martin in the Fields.log
│   │   │   │   ├── img421.jpg
│   │   │   │   └── img422.jpg
│   │   │   ├── cd02
│   │   │   │   └── CDImage.ape
│   │   │   ├── cd03
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 2) - Sir Neville Marinner - Acadamy of St Martin in the Fields.log
│   │   │   │   ├── img426.jpg
│   │   │   │   └── img427.jpg
│   │   │   ├── cd04

等等...一直到 180 CDS。

基本上,我想将所有.ape文件拆分成多个.flac文件,并从中复制标签信息.cue,保留目录结构(最好放在一个全新的不同目录中)。如果可能的话,我更喜欢单行命令而不是脚本。我该怎么做?感谢任何知道如何做到这一点的人!

在有人将此问题标记为与此处的问题重复之前: 将不同子文件夹中的所有 .ape 文件转换为 .flac,我想指出的是,用户不需要将 .ape 拆分成多个 .flac。

答案1

我会分多个步骤来做,因为你很少这样做。透明度在这里比自动化更重要。但一行也是可能的。我假设如果你每一步只对所有文件使用一个命令,这就是你想要的。

您需要安装ffmpeg(或avconv)。shntoolcuetools

要将所有转换.ape.flac

find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;

如果你安装了适用于 APE 文件的 MAC 编码器和解码器补丁, http://shnutils.freeshell.org/shntool/,第一步是不必要的。但你需要自己用 和 来编译它g++yasm文件也是如此.tta,它们也经常被用来代替.ape

分裂和名称 .flac文件:

find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;

如果shnsplit也用于转换,请将.flac中的替换"${1%.cue}.flac"为您要转换的格式的扩展名。

  • %n- 追踪号码
  • %p– 表演者
  • %t– 曲目名称

取自文件名.cue文件.flac。要标记生成的拆分.flac文件:

find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;

随意删除剩余的CDImage.ape.cueCDImage.flacCDImage.ape文件。这些名称都是独一无二的,因此简单的find . -name "CDImage*" -delete就足够了,除非莫扎特创作了CDImage我不知道的开头的乐曲。

为了shnsplit正常工作,需要安装所有必要的编码器/解码器,以便它能够读取和写入文件。APE 模块(以及 TTA 格式)需要从源代码编译,其他模块则需要通过安装包(即 FLAC)进行编译。

这适用于所有标准情况,其中.cue.tta//.flac文件.ape具有相同的名称,扩展名除外。


对其他人的补充说明:如果您处理这种转换,您的源文件可能来自日本,其中 APE 和 TTA 比其他地方更受欢迎。如果文件.cue最初是 SHIFT-JIS 编码,现在以 UTF-8 格式打开,则shnsplit步骤将会打破. 您需要使用以下名称重命名.cue文件

find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +

并将中间文件转换为 UTF-8

find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;

.cux在您尝试执行上述步骤之前。完成以下操作后,不要忘记删除以下文件:

find . -name "*.cux" -delete

相关内容