想把 .flac 转成 .wav
#!/usr/bin/env bash
set -e
find . -iname "*.flac" | while read f
do
target=${f//flac/wav}
echo ${f}
echo ${target}
done
echo "###############################"
find . -iname "*.flac" | while read f
do
target=${f//flac/wav}
echo ${f}
echo ${target}
ffmpeg -y -i "${f}" "${target}"
done
输出:
./Remember Me (Lullaby) - Gael García Bernal,Gabriella Flores,Libertad García Fonzi.flac
./Remember Me (Lullaby) - Gael García Bernal,Gabriella Flores,Libertad García Fonzi.wav
./Rewrite The Stars - Zac Efron,Zendaya.flac
./Rewrite The Stars - Zac Efron,Zendaya.wav
###############################
./Remember Me (Lullaby) - Gael García Bernal,Gabriella Flores,Libertad García Fonzi.flac
./Remember Me (Lullaby) - Gael García Bernal,Gabriella Flores,Libertad García Fonzi.wav
ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers
......
......
/Rewrite The Stars - Zac Efron,Zendaya.flac
/Rewrite The Stars - Zac Efron,Zendaya.wav
ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers
......
......
/Rewrite The Stars - Zac Efron,Zendaya.flac: No such file or directory
可以看到, 第二个循环里, 处理第二首歌, 那个 . 消失了?...
如果我设置了 set -ex 可以看到是这样的
第一个循环
...省略
+ read f
+ target='./Rewrite The Stars - Zac Efron,Zendaya.wav'
+ echo ./Rewrite The Stars - Zac Efron,Zendaya.flac
./Rewrite The Stars - Zac Efron,Zendaya.flac
+ echo ./Rewrite The Stars - Zac Efron,Zendaya.wav
./Rewrite The Stars - Zac Efron,Zendaya.wav
...省略
第二个循环里
...省略
+ read f
+ target='/Rewrite The Stars - Zac Efron,Zendaya.wav'
+ echo /Rewrite The Stars - Zac Efron,Zendaya.flac
/Rewrite The Stars - Zac Efron,Zendaya.flac
+ echo /Rewrite The Stars - Zac Efron,Zendaya.wav
/Rewrite The Stars - Zac Efron,Zendaya.wav
+ ffmpeg -y -i '/Rewrite The Stars - Zac Efron,Zendaya.flac' '/Rewrite The Stars - Zac Efron,Zendaya.wav'
...省略
都是一样的循环啊...
两首歌名
Remember Me (Lullaby) - Gael García Bernal,Gabriella Flores,Libertad García Fonzi.flac
Rewrite The Stars - Zac Efron,Zendaya.flac