Aqui está um script bash que parece algo próximo do que você quer fazer - ele inicia vários processos em paralelo, mas garante que não mais do que n sejam executados ao mesmo tempo.
Por outro lado, se o que você está fazendo é vinculado ao disco, em vez de vinculado à CPU (estou perguntando porque você diz que tem "50 pastas de dados para processar"), então você pode realmente seja melhor executar todos os seus processos em série para evitar a contenção do disco entre os processos.