【发布时间】:2020-05-31 11:53:00
【问题描述】:
我的目录结构如下:
dir1/file.ogg
dir2/file.ogg
dir3/file.ogg
file2.ogg
我想使用 GNU Parallel 将所有 .ogg 文件转换为 .wav。到目前为止,这是我到达的地方:
find . -name '*.*' -type f -print0 | parallel -0 ffmpeg -i {} outputdir/{/.}.wav
这里的问题是,虽然很明显目录有不同的名字,但里面的文件却有相同的名字。上述命令将不断覆盖目录的内容。我想要的是:
outputdir/dir1_file.ogg
outputdir/dir2_file.ogg
outputdir/dir3_file.ogg
outputdir/dir3_file2.ogg
基本上,我想提取子目录名称并将其与文件基名连接起来,然后放入我自己的扩展名。
有什么想法吗?
【问题讨论】:
-
你可以用
rename做一个快速的第一次通过来重命名文件并在正确的目录中然后使用GNU Parallel进行格式转换......@987654321 @ -
@MarkSetchell 谢谢,如果不能使用
parallel单次通过,这是一个有效的选择。有两票声称这个问题与编程无关。 @Philippe 清楚地证明了它有一个编程解决方案(在 Perl 中)。也许下次我会更明确地表明我正在寻求值得的解决方案。
标签: linux bash ffmpeg gnu-parallel