У меня есть папка, полная аудио-файлов .wav
.
Некоторые из них стерео, большинство из них монофонические.
Моно сплит пары называются foo bar track.L.wav
и foo bar track.R.wav
Я могу использовать инструмент командной строки sox
, чтобы объединить монопару в 1 стереодорожку следующим образом:
sox -M track1.L.wav track1.R.wav track1.Stereo.wav
где первые 2 файла - это монопары, а третий - выходной стереофайл.
Это здорово, но я хотел бы иметь скрипт, который автоматически найдет все монопары и объединит их в стереофайлы.
Т.е. мне нужно найти все файлы с одинаковыми именами, кроме .L.
а .R.
перед расширением и запустите на них sox
, выводя в новый файл с тем же именем без суффикса L/R
Например, если моя папка содержит эти файлы:
track1.L.wav
track2.L.wav
track3.L.wav
track4.L.wav
track1.R.wav
track2.R.wav
track3.R.wav
track4.R.wav
track6.wav
track7.wav
Мне нужно выполнить эти команды:
sox -M track1.L.wav track1.R.wav track1.Stereo.wav
sox -M track2.L.wav track2.R.wav track2.Stereo.wav
sox -M track3.L.wav track3.R.wav track3.Stereo.wav
sox -M track4.L.wav track4.R.wav track4.Stereo.wav
Вот где я до сих пор:
for file in ./*.L.wav;
do
file2=`echo $file | sed 's_\(.*\).L.wav_\1.R.wav_'`;
out=`echo $file | sed 's_\(.*\).L.wav_\1.STEREO.wav_'`;
echo $file - $file2 - $out;
done
Это работает, но когда я заменяю строку echo
на
sox -M $file $file2 $out;
это не работает; пробелы в именах файлов приводят к сбою.