xargs: executando o comando uma vez com todos os argumentos

xargs: executando o comando uma vez com todos os argumentos

Meu objetivo é obter uma lista de arquivos que foram modificados gite executar rspeco comando passando cada arquivo como argumento.

Atualmente tenho:

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

Tecnicamente, isso funciona, mas é executado rspecpara cada arquivo modificado. Quero que seja executado:

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

Alguém sabe como posso conseguir isso?

Responder1

... | xargs -0 rspec -f documentation 

Observe que isso pode ser chamado rspecvárias vezes se a linha de comando for muito longa. Isso não é um problema, rspecpois o motivo para chamá-lo uma vez é o desempenho, mas não o use para algo como xargs -0 tar cf archive.tarqualquer segunda, terceira,… execução criaria um arquivo substituindo a saída das execuções anteriores.

informação relacionada