파이프의 출력은 보통 「stdin」으로 다음 명령에 전달되지만, 일부 명령(rm·cp·mv 등)은 「인자」를 기대합니다.
xargs가 「stdin → 인자」로 변환해 다리를 놓습니다.
기본 패턴.
find .
-name "*.tmp" | xargs rm — find 결과를 rm의 인자로.
같은 효과: find .
-name "*.tmp" -exec rm {} \;.
xargs가 더 빠름(여러 파일을 한 번에 rm 호출).
공백·특수 문자 안전.
파일명에 공백·줄바꿈이 있으면 기본 xargs는 깨짐.
find ...
-print0 | xargs -0 ...로 NULL 구분자 사용 — 모든 문자 안전 처리.
항상 -print0 + -0 패턴이 권장.
병렬 처리.
xargs -P 4 — 4개 작업 동시.
ls *.png | xargs -P 4 -I {} convert {} {}.jpg — 4개 동시에 이미지 변환.
단순 작업의 병렬화에 유용.
{} 자리 표시.
xargs -I {} cmd args {} more_args — 「stdin의 한 줄을 {} 자리에」.
ls *.txt | xargs -I {} mv {} /backup/ — 각 파일을 /backup/으로.
-I 옵션이 가장 직관적인 형태.
한 줄 요약
xargs는 stdin을 다음 명령의 인자로.
find ...
| xargs rm 같은 패턴.
-print0 + -0이 안전, -P로 병렬, -I {}로 자리 명시.
큰 작업의 효율적 처리에 필수.
더 알아볼 것
- find -exec vs xargs 차이
- parallel — 더 강력한 병렬
- -n 한 번에 N개씩