使用带有命令循环的递归。语法是什么?

使用带有命令循环的递归。语法是什么?

我使用以下循环进行 .flac --> .mp3 转码:

for file in *.flac; do $(flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"); done

当然,目录必须包含 .flac 文件才能正常工作。我希望学习的是使此命令递归工作的语法。目标是 cd 到包含所有 .flac 文件子目录的目录,并让命令循环遍历所有子目录。

提前致谢。

答案1

创建一个文件 ~/bin/flac2mp3 ,内容如下:

#!/bin/bash
file="$1"
flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"

然后运行find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \;

不使用单独的文件也可以做到,~/bin/flac2mp3但是我认为使用单独的文件更简单、更清晰。

相关内容