次のスクリプトがあります
#!/bin/bash
for dir in /home/marius/data/LibriSpeech/train-clean-100/*/*
do
for file in "$dir"/*
do
if [[ -f $file ]]
then
$name=$(echo $filename | cut -f 1 -d '.')
ffmpeg -i $file $name.wav
rm $file
fi
done
done
デフォルトでは、train-clean-100フォルダの2つのサブディレクトリに移動し、すべての.flacファイルを.wavに変更してから.flacファイルを削除したいと思います。
どういうわけかこれはうまくいきません。
答え1
Ridgyが言ったように、変換するファイルをインポートするにはfindを使用することをお勧めします。
#!/bin/bash
folder=/home/marius/data/LibriSpeech/train-clean-100
for file in $(find "$folder" -type f -iname "*.flac")
do
name=$(basename "$file" .flac)
dir=$(dirname "$file")
echo ffmpeg -i "$file" "$dir"/"$name".wav
#ffmpeg -i $file $dir/$name.wav
#rm $file
done
また、引用符を使用して変数を拡張するときに発生する可能性のある空白の問題を解決し、これらのスクリプトの場合は、実行する前にechoを使用して必要に応じて機能することを確認できます。