编写在许多目录中执行不同脚本的脚本

时间:2017-10-18 00:09:59

标签: bash shell

所以,我有一个音乐目录。在这个目录中,我有多个文件夹,所有文件夹都有不同的名称,没有模式。 [前。 Daytona OST,sonic cd等。]。

我想在所有这些脚本中运行一个将所有.flac转换为.mp3的脚本,但我只能逐个运行该脚本。

我可以基本上编写一个脚本,将cd放入第一个目录,执行脚本,退出,然后cd进入第二个目录,然后重新执行吗?

文件夹没有模式,所以我认为没有办法用通配符来实现。

为了方便起见,我希望在每个目录中运行的脚本称为conversiontomp3.sh

1 个答案:

答案 0 :(得分:0)

您可以使用globstar并在循环中获取所有.flac文件:

#!/bin/bash

shopt -s globstar
for f in **/*.flac; do
  [[ -f $f ]] || continue # skip if not a regular file
  conversiontomp3.sh "$f"
done

这里假设转换脚本将mp3文件保存在.flac文件所在的目录中。如果不是这样,您可能需要获取.flac文件的目录并将输出文件名传递给脚本。