Tenho um grande número de scripts que podem ser executados como trabalhos separados em um cluster de computação, que usa slurm. Quero selecionar alguns deles, com base no conteúdo, para enviar. É fácil identificar os nomes dos arquivos dos trabalhos que desejo usando o grep, mas estou lutando para canalizá-los e enviá-los.
Eu pensei que poderia fazer algo assim:
grep -l 'regex' script_folder/* | xargs sbatch
No entanto, isso parece enviar todos os scripts como um trabalho, quando desejo que cada script seja seu próprio trabalho separado.
Responder1
grep -l 'pattern' script_folder/* | xargs -n 1 sbatch
xargs
por padrão, lerá o máximo que puder caber em uma linha de comando antes de executar o utilitário fornecido com todas as coisas que ele leu.
Com -n 1
você limita o número de itens que ele passa para o utilitário a um único item por chamada.