executa o mesmo comando para múltiplos arquivos ao mesmo tempo [duplicado]

0

Eu preciso executar o mesmo comando separadamente para cada arquivo ao mesmo tempo.

Eu tentei

for file in *.txt; do ./script <"$file"; done

mas Começa o primeiro e espera até que termine e vá para o próximo.

Eu preciso começar todos juntos.

    
por Shervan 21.09.2016 / 07:32

2 respostas

2

Se script não exigir nenhuma entrada do usuário, você poderá usar os recursos de processamento de tarefa do shell para executá-lo em segundo plano

for file in *.txt; do ./script <"$file" & done

Quando você adiciona & a um comando, ele é executado em segundo plano. Procure controle de trabalho na página man do bash (ou seu shell preferido) para detalhes.

    
por 21.09.2016 / 09:01
2
ls *.txt > list
cat list | parallel './script {}' &
wait

Primeiro, liste os arquivos txt no arquivo list . O comando parallel executará o script em cada nome de arquivo em segundo plano. O último comando wait aguardará que todos os trabalhos em segundo plano sejam concluídos, e você poderá prosseguir para outros comandos.

    
por 21.09.2016 / 09:31