Use xargs
com -n 1
significando "apenas passe um único argumento para cada invocação do utilitário".
Algo como:
printf '%s\n' file*.txt | xargs -n 1 -P 100 perl dataProcessing.pl
que assume que os nomes dos arquivos não contêm novas linhas literais.
Se você tiver o GNU xargs
ou uma implementação de xargs
que entenda -0
(para ler argumentos delimitados por nul, que permite nomes de arquivos com novas linhas) e -r
(por não executar o utilitário com vazio lista de argumentos, quando file*.txt
não corresponde a nada e nullglob
está em vigor), você pode fazer
printf '%sprintf '%s\n' file*.txt | xargs -n 1 -P 100 perl dataProcessing.pl
' file*.txt | xargs -r0 -n 1 -P 100 perl dataProcessing.pl
Observe que essas duas variações podem iniciar até 100 instâncias paralelas do script, o que pode não ser o que você deseja. Você pode querer limitá-lo a um número razoável relacionado ao número de CPUs em sua máquina (ou relacionado à quantidade total de RAM disponível dividida pelo uso esperado de memória por tarefa, se estiver ligado à memória).