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두 번째, 세 번째 실행과 같은 상황에서는 사용하지 마십시오. 이전 실행의 출력을 덮어쓰는 아카이브가 생성됩니다.

관련 정보