... warum Du den Vorschlag leider nicht verwenden kannst.
Bitte nicht falsch verstehen. Für die anfänglich gestellte Aufgabe ist Deine Lösung (nach Korrektur) perfekt, was ich mit "Sonst aber auch ein schöner Ansatz." zum Ausdruck gebracht zu haben meinte.
Ich wollte nur zusätzlich zeigen, dass es für die Nutzung globaler Variablen eine alternative Strategie braucht. Ich vermute allerdings, dass es auch eine Möglichkeit gibt, die Variablen in die Tochterprozesse zu "vererben".
Ansonsten läßt sich auch Dein Ansatz folgendermaßen "rückwärts" formulieren:
while read dir; do while read; do ls "$REPLY" ; done < <(find "$dir" -maxdepth 1 -type f -iname "*.flac" -print -quit) ; done < <(find . -type d)