将不同子文件夹中的所有 .ape 文件转换为 .flac

tig*_*k89 9 command-line format-conversion avconv

我试图使用avconv命令行将一些 .ape 文件转换为 .flac 文件;显然,avconv不是这里的重点;它的语法非常简单,avconv -i inputApeFile.ape outputFlacFile.flac.

关键是文件嵌套在更多的子文件夹中;即,我有艺术家文件夹,然后是各种 CD 子文件夹,每个子文件夹都包含不同的 .ape 文件。如何转换所有文件,然后将它们保存在原始文件的同一文件夹中,但扩展名为 .flac?

如果可能的话,我想在一行中只使用 shell 命令而不使用脚本。我认为它应该是这样的

avconv -i 'ls -R | grep ape' '???'
Run Code Online (Sandbox Code Playgroud)

但我坚持第二部分(也许使用sed??!?)

αғs*_*нιη 13

您需要的命令是:

find /path/to/MainDir/ -type f -name "*.ape"  -execdir sh -c ' avconv -i "$1" "${1%.ape}.flac" ' _ {} \;
Run Code Online (Sandbox Code Playgroud)

这将找到每个具有.ape后缀的文件,然后将具有相同文件名和.flac后缀的文件转换到与原始文件所在的位置相同的位置。

{}是当前找到的文件的路径。
这里查看测试