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를 사용하여 원하는 대로 작동하는지 확인할 수 있습니다.

관련 정보