xargs: 모든 인수를 사용하여 명령을 한 번 실행합니다.

xargs: 모든 인수를 사용하여 명령을 한 번 실행합니다.

내 목표는 에서 수정된 파일 목록을 가져온 git다음 rspec각 파일을 인수로 전달하는 명령을 실행하는 것입니다.

현재 나는 다음을 가지고 있습니다:

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

이것은 기술적으로는 작동하지만 rspec수정된 각 파일에 대해 실행됩니다. 실행하고 싶습니다.

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

내가 이것을 어떻게 달성할 수 있는지 아는 사람이 있나요?

답변1

... | xargs -0 rspec -f documentation 

rspec명령줄이 너무 길면 여러 번 호출될 수 있습니다 . rspec한 번 호출하는 이유는 성능 때문이므로 문제가 되지 않지만, xargs -0 tar cf archive.tar두 번째, 세 번째, ... 실행이 이전 실행의 출력을 덮어쓰는 아카이브를 생성하는 것과 같은 용도로는 사용하지 마십시오.

관련 정보