2017-10-18 105 views
0

所以,我有一个音乐目录。在这个目录中,我有多个文件夹,所有文件夹都有不同的名称,没有任何模式。 [前。代托纳OST,声波CD等]。编写一个在许多目录中执行不同脚本的脚本

我想运行一个脚本,将所有的.flac转换成.mp3,但我只能一个接一个地运行脚本。

我可以从本质上编写一个脚本,将cd放入第一个目录,执行脚本,返回,然后将光盘放入第二个目录,然后重新执行它?

该文件夹没有模式,所以我不认为有办法用通配符来做到这一点。

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

+3

模式是,他们是文件夹。您可以在* /中使用'for dir; (cd“$ dir”&& conversiontomp3.sh);做完了' –

+0

工作完美,谢谢!猜猜我需要学习更多的shell ... – txtman

回答

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 

假设是转换脚本保存在同一目录中,其中.FLAC文件为MP3文件。如果不是这样,您可能需要抓取.flac文件的目录并将输出文件名传递给脚本。

相关问题