【问题标题】:Batch Convert Files Different Output Folder批量转换文件不同的输出文件夹
【发布时间】:2020-10-14 04:21:33
【问题描述】:

目标是将所有 .wav 文件转换为不同位置的 .mp3。 以下代码有效,但在同一目录中创建输出文件。 所有新创建的 .mp3 都在 .wav 旁边。

for file in /path/to/*.wav; do lame --preset insane "$file" "${file%.wav}".mp3; done

我如何使用终端将充满 .wav 的驱动器转换为 lame 并将 .mp3 输出到不同的驱动器?我试过改变 lame 的输出,但是这个语法会抓取整个文件名。寻找最简单的解决方案。

从蹩脚的手册中,提要非常简单:

lame [options] <infile> <outfile>

找到基本概念here

【问题讨论】:

  • 最简单的方法是在运行lame 之前将cd 转到所需的输出目录。您可能可以将"/path_to_folder/${file%.wav}".mp3; 作为lame 的输出参数。您还拥有 /path/to/ 作为 glob 的一部分,因此相同的路径将成为输出参数的一部分...
  • 几乎明白了,得到一个“无法初始化输出文件”,但似乎指向正确的目的地!使用cd 到所需的输出目录,然后运行for file in **/*.wav; do lame --preset insane "$file" "/Volumes/MUSICA/${file%.wav}".mp3; done

标签: bash macos terminal


【解决方案1】:

假设输出文件应该放在/output,可以扩展循环以使用'basename'计算输出文件名

OUT=/output
for file in /path/to/*.wav; do
    # Replace .wav with .mp3
    out=${file%.wav}.mp3
    # Remove directory (anything up to the last '/'
    out=${file##*/}
    lame --preset insane "$file" $OUT/$out
done

【讨论】:

  • 仍然无法正常工作,出现“无法初始化输出文件”。在该步骤中如何从路径中删除目录?我想为 /Volumes/disk1 等输出文件指定一个完全不同的路径。谢谢你的帮助,差不多了。
  • @RyanvonSchwedler 答案已修复,可将输出放置在任何 OUT 设置中。
猜你喜欢
  • 2013-04-15
  • 2014-08-02
  • 2018-06-14
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多