2017-10-18 5 views
0

私は音楽ディレクトリを持っています。このディレクトリには、複数のフォルダがあり、パターンのない別の名前のフォルダがあります。 [ex。デイトナOST、ソニックCDなど]。多くのディレクトリで異なるスクリプトを実行するスクリプトを書く

すべての.flacを.mp3に変換するスクリプトを実行したいと思いますが、そのスクリプトは1つずつしか実行できません。

私は本質的にスクリプトを書いて、そのCDを第1のディレクトリに入れ、スクリプトを実行し、戻って、第2のディレクトリにcdして、もう一度やり直すことができますか?

フォルダにはパターンがないため、ワイルドカードを使用する方法はないと思います。

すべてのディレクトリで実行したいスクリプトは、conversiontomp3.shと呼ばれています。

+3

パターンはフォルダであるということです。あなたは 'for dir in * /;を使うことができます。 do(cd "$ dir" && conversiontomp3.sh); done' –

+0

完璧に働いた、ありがとう!私はもっ​​とシェルを学ぶ必要があると思う... – 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ファイルのディレクトリを取得し、出力ファイル名をスクリプトに渡す必要があります。

関連する問題