如果#channels是2,则连接wav文件

时间:2017-11-23 21:06:30

标签: bash macos audio terminal sox

我需要连接文件夹中的所有wav文件。

我尝试使用命令

sox folder_name/*.wav folder_name.wav

但得到了错误

sox FAIL sox: Input files must have the same # channels

原来该文件夹中的2864个wav文件中只有21个有2个频道而不是1个。

如何忽略带有2个通道的21个文件并将所有2843个wav连接到1个通道?

1 个答案:

答案 0 :(得分:1)

使用soxi获取所有通道文件,将它们放入数组中然后调用sox

for file in folder_name/*.wav; do
  if soxi "$file" | grep -q 'Channel.*1'; then
    files+=("$file")
  fi
done

sox "${files[@]}" folder_name.wav