2017-10-18 58 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文件的目錄並將輸出文件名傳遞給腳本。

相關問題