批量ogg vorbis转码

批量ogg vorbis转码

我想做的只是简单地发出这个命令

find . -name "*flac" -exec oggenc -q 7 {} \;

将 oggs 吐到我选择的任何文件夹中。我尝试将其放在~/vorbis命令末尾,但出现谓词错误:

find: possible unquoted pattern after predicate `-execdir'?

我已经浏览过“查找手册页”,我知道{}末尾的-q 7是用来查找flac文件的。所以这让我陷入了困境。

有人知道我必须在该命令中添加什么才能将 oggs 输出到所选文件夹中吗?

感谢您的阅读和帮助。

顺便说一句,我确实尝试过:

find . -name "*flac" -exec oggenc -q 7 ~/vorbis {} \;

但这只会将 oggs 吐到带有 flacs 的文件夹中。不是~/vorbis文件夹。我试图保留文件夹名称和结构,将其输出到我选择的文件夹中(~/vorbis)。我并不要求完整的剧本。我只是简单地要求有人解释我如何才能实现我想要实现的目标。

谢谢你!

答案1

使用子 shell,我们可以更改文件名并执行其他命令,确保输出到达我们想要的位置。

mkdir -p ~/vorbis
find . -name "*flac" -exec sh -c 'oggenc -q 7 "$1" -o ~/vorbis/"${1%.*}".ogg' _ {} \;

...使用 flac 模块打开:FLAC 文件阅读器将“./summerbreezes.flac”编码为“/home/k/vorbis/./summerbreezes.ogg”,质量为 7.00 [ 99.0%] [ 剩余 0m00s] -

完成编码文件“/home/k/vorbis/./summerbreezes.ogg”

文件长度:1m 11.0s 经过时间:0m 01.3s 速率:55.0760 平均比特率:198.3 kb/s

ls ~/vorbis
alsowe.ogg        christmascard.ogg  love1.ogg          themanyone2.ogg  yourmom.ogg
An_Open_Door.ogg  GEDC4177.ogg       summerbreezes.ogg  winning.ogg

答案2

如果您不关心通向的路径,则myfile.flac可以使用一种-execdir技巧将它们全部吐到一个目录中。

find-execdir在执行命令之前,将更改文件的目录。它还更改{}为以./.

find . -name '*.flac' -execdir oggenc -q 7 -o ~/vorbis/{}.ogg {} \;

因此对于这个例子,当它发现./path/to/myfile.flac它时就会执行:

cd ./path/to
oggenc -q 7 -o ~/vorbis/./myfile.flac.ogg ./myfile.flac

(笔记:至少对于 GNU findutils 来说,./myfile.flac真的它找到的文件或符号链接的完整路径,而不是相对路径,但这对于OP的问题来说应该不重要)

相关内容