Você pode ir para xargs
. Primeiro, alimente-o com os arquivos através de um pipe no stdin e, em seguida, use os argumentos com um executável, enquanto mantém o controle do paralelismo, definindo o número máximo de processos a serem usados.
printf "%sprintf "%s%pre%" _the_right_dir_/* | xargs -0 -I@ -P500 ./my_script.pl @ file_2 @file_3
" _the_right_dir_/* | xargs -0 -I@ -P500 ./my_script.pl @ file_2 @file_3
-0
informa xargs
que a entrada é separada por NUL.
-I@
define o símbolo de substituição. No efeito, o segundo @
no lado direito do pipe ( |
) é substituído por um nome de arquivo. Então aparece mais uma vez em @file_3
para demonstrar que você pode usar @
mais uma vez no mesmo comando. Aqui para produzir o nome do arquivo de saída.
-P500
significa no máximo 500 processos para serem executados ao mesmo tempo.
Por fim, printf "%s
lista os arquivos de diretório que os separam dos NULs. Então xargs
" _the_right_dir_/*./my_script.pl
os toma um por um e os usa como argumentos para %code% .