flacファイルをwavに変換するスクリプトは機能しません。

flacファイルをwavに変換するスクリプトは機能しません。

次のスクリプトがあります

 #!/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を使用して必要に応じて機能することを確認できます。

関連情報