Home [Linux] xargs 명령어와 사용 사례
Post
Cancel

[Linux] xargs 명령어와 사용 사례

xargs 명령어를 쓰게된 이유

특정 명령어를 통해 나온 출력을 활용하여 새로운 커맨드를 일괄적으로 수행할 일이 생겼다. xargs 명령어는 데이터 스트림을 읽고 명령 줄을 생성하고 실행하는 기능을 가지고 있다. 즉 특정 명령어의 출력을 가지고 새로운 명령의 인수로서 사용할 수 있다.

사용 사례

특정 파일 확장자를 가진 모든 파일 삭제

만약 .sh 확장자를 가진 모든 파일을 삭제하고 싶을때 아래와 같이 xargs 명령어를 통해 삭제할 수 있다. 물론 rm 명령어에 패턴을 주어도 동일한 기능을 하지만 여기서는 다른 명령어와 조합해서 쓸수 있다는 것을 보여주기 위해서 사용해보았다.

1
$ ls | grep "\.sh$" | xargs rm

위 명령어는 ls 출력에서 .sh 확장자들을 조회하고 xargs 에서 rm 뒤에 해당 출력들을 입력함으로써 동작한다.

특정 커맨드의 아웃풋을 활용하여 새로운 명령어 생성

만약 특정 텍스트의 아웃풋을 잘라서 새로운 명령어를 만들고 싶다면 xargs를 통해 만들 수 있다.

1
2
3
4
$ cat test.txt
1 kevin
2 william
3 mickey

만약 test.txt에 위와 같은 정보가 있고, 숫자 뒤의 이름 정보만 가져와서 아래 명령어를 수행하고 싶다고 하자.

1
$ deleteuser -u 유저명 -f

이때는 아래와 같이 xargs를 통해 해당 명령을 수행할 수 있다.

1
cat test.sh | awk '{ print $2 }' | xargs -I{} deleteuser -u {} -f

여기서 xargs는 -I 옵션을 사용했다. 해당 옵션은 이전 명령어로 수행한 결과를 {} 에 넣겠다는 것이다. 즉 deleteuser -u {} 에 유저명을 넣게 되는 것이다.

위 명령어를 수행하면 deleteuser -u kevin -f deleteuser -u william -f deleteuser -u mickey -f 를 차례대로 수행한 것과 같은 효과를 가진다.

This post is licensed under CC BY 4.0 by the author.

Haproxy

[Linux] tmux 설치 및 사용법과 명령어 정리