G'day
Eu tentei resolver esse problema a manhã toda, mas não tive sucesso. Eu gostaria de procurar por determinados scripts em uma pasta específica e executá-los todos em paralelo. Os scripts têm nomes diferentes, mas todos terminam com "run.sh". Abaixo o que eu tentei sem sucesso.
A primeira abordagem foi usar find em combinação com -execdir. Isso funciona, no entanto, os scripts são executados de forma sequencial. Eu quero que todos os scripts sejam executados simultaneamente (paralelos). Parece não haver nenhuma opção para conseguir isso com -execdir
find . -name "*run.sh" -type f -execdir 'nohup' {} '&' \;
Em seguida, tentei usar xargs porque existe uma opção paralela (-P). Eu não tentei a opção paralela ainda, porque não consigo obter xargs para executar os scripts em suas respectivas subpastas. Os comandos abaixo executam todos os scripts, mas fazem isso na pasta em que estou executando o comando, portanto os próprios scripts não funcionam. Os scripts devem ser executados em suas próprias subpastas. No exemplo acima, -execdir está fazendo isso ao contrário de -exec. Como faço para conseguir isso com xargs?
nohup find . -name "*run.sh" -type f | xargs -0 -I{} bash -c f\ \{\}
ou
nohup find . -name "*run.sh" -type f | xargs -0 -I{} bash -c "f {}"
ou
nohup find . -name "*run.sh" -type f | xargs -0 -I{} bash -c "./{}"
Estou muito frustrada e espero que exista alguém que possa ajudar.
Muito obrigado!