xargs

xargs는 표준 입력으로 받은 데이터를 다른 명령어의 인수로 전달하는 유틸리티다.
주로 파이프와 함께 사용되고, 입력 데이터를 받아서 특정 명령어를 여러 번 실행할 때 유용하다.

옵션

-n N, 그룹화

--max-args=N
한번에 최대 N개의 인수를 명령어에 전달한다.

$ echo "1 2 3 4 5 6 7" | xargs -n 2

1 2
3 4
5 6
7
-I {}, 플레이스 홀더 지정

입력에서 받은 각 항목을 지정된 플레이스홀더(기본 {})으로 대체해서 명령어에 전달한다.

$ echo "aaa bbb" | xargs -n 1 -I {} echo "{}"
-0, NUL 구분자

NUL(\0) 문자로 구분된 입력을 처리한다.
NUL문자를 구분자로 사용하면 공백, 줄바꿈 문자가 포함된 경우에도 올바르게 처리할 수 있다.

$ find . -name "*.md" -print0 | xargs -0 -I {} echo "{}"
markdown.md
book.md
tool.md
README.md
about.md
-P n, 병렬 처리 모드

--max-procs=maxprocs
병렬로 실행할 프로세스의 수를 지정한다.

$ echo "a b c d" | xargs -n 1 -P 4 -I {} cp {} backup