====== xargs ======
* [[http://ko.wikipedia.org/wiki/Xargs|Xargs]]
* 파이프로 넘어온 문자열을 명령행 인자로 바꿔 준다.
===== 많은 파일 삭제 =====
''/path'' 이하의 모든 파일 삭제하기.
find /path -type f -print0 | xargs -0 rm
===== 파일 내용 검색 =====
'*.java' 파일들 중에서 ''User''라는 문자열이 있는 파일 검색
find . -name "*.java" | xargs grep User
===== 옵션 문자열 대체 =====
옵션이 될 값을 놓을 위치가 명령의 맨 끝이 아닐 때는 특정 문자열을 원하는 옵션 문자열로 대체해야 한다.
jcmd | grep Bootstrap | cut -f1 -d' ' | xargs -I % jcmd % VM.version
''-I 대체문자열'' 에서 대체 문자열이 옵션으로 대체된다. 즉, ''jcmd 123 VM.version'' 형태로 명령이 바뀐다.
===== 앞선 명령의 결과가 없으면 실행 안함 =====
* ''%%--%%no-run-if-empty'' 옵션을 주면 앞선 명령의 결과가 empty 이면 xargs 뒤의 명령을 실행하지 않는다.
===== 줄 합치기 =====
* ''xargs -n N'' 는 ''N'' 줄 단위로 합친다. 구분자는 공백
* https://stackoverflow.com/a/25973154/1051402
* 혹은 ''paste -d' ' - - - -'' : ''-'' 갯수만큼의 줄단위로 합친다. 성능이 더 좋다고한다.
* clipboard 에 있는 내용 줄 합치기
#!/bin/sh
# $1 는 합칠 줄 갯수. 기본값 10
JOIN_LINES=$1
if [ -z "$JOIN_LINES" ]
then
JOIN_LINES=10
fi
xclip -o -sel clip | xargs -n$JOIN_LINES \
| xclip -i -sel clip
===== 참조 =====
* [[https://www.youtube.com/watch?v=5EFY5ztZb00|HOW TO USE Xargs!!! | Linux Core Utils - YouTube]]