在Unix中批量合并两个文件

在Unix中批量合并两个文件

有谁知道如何批量将一个音频文件添加到另一个音频文件并为每个音频文件创建单独的输出。例如

Files:

Static.wav
Audio1.wav
Audio2.wav
Audio3.wav

我需要一个可以执行以下操作的脚本:

Static.wav + Audio1.wav = Audio1out.wav
Static.wav + Audio2.wav = Audio2out.wav
Static.wav + Audio3.wav = Audio3out.wav
Static.wav + Audio*.wav = Audio*out.wav
(* = wildcard)

谢谢!

答案1

又一次更新:这与提供的解决方案类似这里。此解决方案使用 ffmpeg 进行转换(这是您不需要的)并使用 sox 合并文件。

你只需要下载袜子并使用它。下面的脚本将执行您想要的操作,但输出文件名可能不是您想要的。但您可以以不同的方式处理重命名部分。

使用以下命令创建一个 shell 脚本(combine.sh 或其他名称)并在必要时运行它:

for i in Audio*.wav
do
    sox -m Static.wav $i {$i}out.wav
done    

请参阅此处了解更多信息使用 sox

答案2

一条相当简单的线路将会为您提供输出n

echo $(cat file1)$(cat filen)

答案3

文件=“麦当娜.wav”

执行合并 () {
    输入文件名="$@"

    # 删除路径
    输入文件名="${输入文件名##*/}"

    # 下面的输入文件名参数扩展会删除扩展名
    cat "$file" "$input_filename" > "newfile.${input_filename%.*}.wav"
}

因此你可以这样做:

do_combine“metallica.wav”

生成的文件名为“newfile.wav”,是麦当娜 (Madonna) 和金属乐队 (Metallica) 的混合曲,首先从这位物质女孩本人开始。

cat是合并文件的合法方法wav

因此,如果您想合并特定目录中的所有文件:

对于 /path/to/dir/*.wav 中的文件
    do_combine“$文件”
完毕

可能那里有 bug,这是即兴做的。有一个程序可以合并 madonna 文件,解释起来确实很困难。

相关内容