xargs
출처 : http://blog.naver.com/siyang6/30047770322
##################### xargs 사용하기 #####################
# ls file* | xargs -t -i cp {} {}.bak
file0, file1, .... file10,.... 파일을 file0.bak,.....,file10.bak,..... 파일로 복사한다.
-t 는 xargs를 통해 구성된 명령어를 표준 에러로 출력한다.
-i 스위치는 xargs에 전달된 라인 전체를 뒤에 나오는 명령어의 인자로 사용한다.
디플트로 라인 전체를 의미하는 기호는 {}이다.
# find -type f -print0 | xargs -0 ls
# cat environ | tr '\0' '\n'
#!/bin/sh
if [ -z "$ALBUM" ]; then
echo 'You must set the ALBUM name first (eg. export ALBUM="Greatest Hits")'
exit 1
fi
for x in *; do
echo -n $x; echo -ne '\000'
echo -n `echo $x | cut -f 1 -d '-'`
echo -n " - $ALBUM - "
echo -n `echo $x | cut -f 2- -d '-'`; echo -ne '\000'
done | xargs -0 -n2 mv
-0은 NULL 문자를 구분자로 사용하라는 의미이고, -n2는 한번 실행할 때마다
두 개의 인자(NULL 문자로 구분된)를 취해서 mv 명령어에 전달하라는 의미이다.
cut -f 1 -d '-' ---> '-'를 구분자로 하여 1번째 항을 추출한다.
cut -f 2- -d '-' ---> '-'를 구분자로 하여 2번재 항부터 끝까지 추출한다.
echo -n ---> 개행문자를 출력하지 않는다.
echo -e ---> 백슬래시(\)를 이용한 확장문자를 사용 가능하게 한다.
######################## end : xargs 사용하기 ####################