
Meu objetivo é obter uma lista de arquivos que foram modificados git
e executar rspec
o 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 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?
Responder1
... | xargs -0 rspec -f documentation
Observe que isso pode ser chamado rspec
várias vezes se a linha de comando for muito longa. Isso não é um problema, rspec
pois o motivo para chamá-lo uma vez é o desempenho, mas não o use para algo como xargs -0 tar cf archive.tar
qualquer segunda, terceira,… execução criaria um arquivo substituindo a saída das execuções anteriores.