xargs 명령어
args 리스트를 구성해 명령어를 실행해준다
Examples
xargs
의 기본 동작은 표준 입력을 읽어 명령어의 인자로 전달하는 것이다.
$ echo 11 22 33 | xargs printf "[%d] _%d_ <%d>\n"
[11] _22_ <33>
$ echo 11 22 33 | xargs mkdir
$ ls -d */
11/ 22/ 33/
-I : placeholder 지정
-I
옵션을 사용하면 인자 치환 위치를 지정할 수 있다.
# 30일 이상된 파일을 모두 찾아 .backup 확장자를 붙인 백업 파일을 만든다.
find . -type f -mtime +30 | xargs -I {} cp {} {}.backup
위의 명령에서 -I {}
는 placeholder로 {}
를 사용하겠다고 선언하는 것이다.
반드시 {}
를 사용해야 하는 것은 아니고, 다른 것을 사용해도 된다.
그러나 일반적으로 {}
를 주로 사용한다.
# placeholder를 [] 로 지정
find . -type f -mtime +30 | xargs -I [] cp [] [].backup
# placeholder를 ABC 로 지정
find . -type f -mtime +30 | xargs -I ABC cp ABC ABC.backup
-p : 각 명령에 대해 실행할 것인지 질문한다
-p
옵션을 사용하면 각 명령에 대해 실행할 것인지 질문한다. y
로 대답하면 실행한다.
$ find . -type f -mtime +30 | xargs -p -I {} cp {} {}.backup
cp ./a ./a.backup?...y # a.backup 파일 복사에 y로 대답
cp ./b ./b.backup?...n # b.backup 파일 복사에 n으로 대답
-P : Parallel 모드
-P
옵션을 사용하면 최대 몇 개의 프로세스를 사용할 수 있는지를 지정할 수 있다.
# 최대 3개의 프로세스를 생성해 병렬로 실행한다
find . -type f -mtime +30 | xargs -P 3 -I {} cp {} {}.backup
-P 0
으로 지정해주면 가용 가능한 최대 프로세스 수를 사용한다.
-n : 한 번에 실행할 인자의 개수를 지정한다
-n
옵션을 사용하면 한 번에 실행할 인자의 개수를 지정할 수 있다.
$ seq 8 | xargs -n3
1 2 3
4 5 6
7 8