Talvez em duas linhas
IFS=$'\n' DIRS=( $(produces_dir_names --options...) )
find "${DIRS[@]}" -find-options...
Exemplo:
$ mkdir -p "/tmp/test/a b/foo" "/tmp/test/x y/bar"
$ IFS=$'\n' DIRS=( $(printf "/tmp/test/a b\n/tmp/test/x y\n") )
$ find "${DIRS[@]}" -mindepth 1
/tmp/test/a b/foo
/tmp/test/x y/bar
Mas, em geral, esse não é um bom estilo. Por exemplo, você estará em apuros se o seu DIRS contiver novas linhas. Melhor consertar seu "generate_dir_names" para imprimir seqüências de caracteres terminadas por byte nulo. Quanto ao meu exemplo, seria algo como:
$ printf "/tmp/test/a bproduces_dir_names --options... | tr '\n' 'IFS=$'\n' DIRS=( $(produces_dir_names --options...) )
find "${DIRS[@]}" -find-options...
' | xargs -0 -I '{}' find '{}' -find-options...
/tmp/test/x y$ mkdir -p "/tmp/test/a b/foo" "/tmp/test/x y/bar"
$ IFS=$'\n' DIRS=( $(printf "/tmp/test/a b\n/tmp/test/x y\n") )
$ find "${DIRS[@]}" -mindepth 1
/tmp/test/a b/foo
/tmp/test/x y/bar
" | xargs -0 -I '{}' find '{}' -mindepth 1
/tmp/test/a b/foo
/tmp/test/x y/bar
Se você não pode corrigir "produces_dir_names", em relação ao meu último comentário, a solução mais geral ficaria assim:
$ printf "/tmp/test/a bproduces_dir_names --options... | tr '\n' '%pre%' | xargs -0 -I '{}' find '{}' -find-options...
/tmp/test/x y%pre%" | xargs -0 -I '{}' find '{}' -mindepth 1
/tmp/test/a b/foo
/tmp/test/x y/bar
Ainda há problemas com "novas linhas", a menos que você corrija "creates_dir_names" para evitar tr
.