将 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 检查它是否执行了您想要的操作。

相关内容