2017-10-18 3 views
0

Also, ich habe ein Musikverzeichnis. In diesem Ordner habe ich mehrere Ordner, alle mit unterschiedlichen Namen, die kein Muster haben. [Ex. Daytona OST, Sonic CD usw.].Schreiben eines Skripts, das ein anderes Skript in vielen Verzeichnissen ausführt

Ich möchte ein Skript in allen von ihnen ausführen, das alle .flac in .mp3 konvertiert, aber ich kann dieses Skript nur eins nach dem anderen ausführen.

Kann ich im Wesentlichen ein Skript schreiben, dass CD in das erste Verzeichnis, führt das Skript, kommt wieder raus, und CD's in das zweite Verzeichnis, und macht es noch einmal?

Die Ordner haben kein Muster, also glaube ich nicht, dass es einen Weg gibt, es mit einem Platzhalter zu machen.

Der Einfachheit halber heißt das Skript, das ich in jedem Verzeichnis ausführen möchte, conversiontomp3.sh.

+3

Das Muster ist, dass sie Ordner sind. Sie können 'für dir in * /; (cd "$ dir" && conversiontomp3.sh); done' –

+0

Arbeitete perfekt, danke! Ich denke, ich muss mehr Shell lernen ... – txtman

Antwort

0

können Sie globstar verwenden und greifen alle Ihre .flac Dateien in einer Schleife:

#!/bin/bash 

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

Annahme ist, dass das Conversion-Skript der MP3-Datei in demselben Verzeichnis gespeichert wie in dem die .flac Datei. Wenn dies nicht der Fall ist, müssen Sie möglicherweise das Verzeichnis der .flac-Datei abrufen und den Namen der Ausgabedatei an das Skript übergeben.

Verwandte Themen