Es ist schon eine Weile her, seit ich es benutzt habe make
, also nimm es mit ...
Ich habe ein Verzeichnis flac
mit FLAC-Dateien. Ich habe ein entsprechendes Verzeichnis mp3
mit MP3-Dateien. Wenn eine FLAC-Datei neuer als die entsprechende MP3-Datei ist (oder die entsprechende MP3-Datei nicht vorhanden ist), möchte ich eine Reihe von Befehlen ausführen, um die FLAC-Datei in eine MP3-Datei zu konvertieren und die Tags zu kopieren.
Der Kicker: Ich muss das flac
Verzeichnis rekursiv durchsuchen und entsprechende Unterverzeichnisse im mp3
Verzeichnis erstellen . Die Verzeichnisse und Dateien können Leerzeichen in den Namen enthalten und werden in UTF-8 benannt.
Und ich möchte make
damit fahren.
make
näher an der Implementierung als bloß bash
.
sh
Skript , das die Liste der FLAC - Dateien geht durch ( find | while read flacname
), macht eine mp3name
davon läuft „mkdir -p“ auf das dirname "$mp3name"
, und dann if [ "$flacfile" -nt "$mp3file"]
wandelt "$flacname"
in "$mp3name"
nicht wirklich Magie. Die einzige Funktion, die Sie im Vergleich zu einer make
basierten Lösung tatsächlich verlieren, ist die Möglichkeit, N
Dateikonvertierungsprozesse parallel zu auszuführen make -jN
.
make
und das Vorhandensein von Leerzeichen in Dateinamen sind widersprüchliche Anforderungen. Verwenden Sie ein für die Problemdomäne geeignetes Tool.