xargs: executando o comando uma vez com todos os argumentos

1

Meu objetivo é obter uma lista dos arquivos que foram modificados em git , depois executar o comando rspec passando cada arquivo como um argumento.

Atualmente, tenho:

$ git status -s | awk '{if ($1 == "M") print $2}' | tr "\n" "\0" | \
    xargs -0 -I % rspec -f documentation %

Isso funciona tecnicamente, mas é executado rspec para cada arquivo modificado. Quero que seja executado:

$ rspec path/to/file/1 path/to/file/2 ...

Alguém sabe como posso conseguir isso?

    
por Michael Baldry 18.11.2014 / 12:12

1 resposta

2
... | xargs -0 rspec -f documentation 

Observe que isso pode chamar rspec várias vezes se a linha de comando for muito longa. Isso não é um problema com rspec , já que o motivo para chamá-lo uma vez é desempenho, mas não o use para algo como xargs -0 tar cf archive.tar em que qualquer segundo, terceiro ... run criaria um arquivo sobrescrevendo a saída do anterior corre.

    
por 18.11.2014 / 12:29

Tags