2 Principais problemas com o seu script.
-
O
- cd não aceita mais parâmetros. Então, o resto da linha após o nome do diretório será ignorado (aqui, -exec $ command ...)
- exec (não sei o que -exec significa aqui) executará o comando no lugar do processo pai, ou seja, seu script principal será substituído e o resto do script não será mais executado.
Cada comando deve ser assim: "cd $ pathx; $ command". Desde que você não quer ser bloqueado, você tem que executá-lo em segundo plano "(cd $ pathx; $ command) &"
Agora você quer fazer isso por 20 pastas, você pode executar um loop, algo assim:
for p in 'cat file-containing-folder-names'
do
(cd $p; $command) &
done
Lembre-se de que 20 processos diferentes são gerados aqui. Certifique-se de que não saia do controle.