본문으로 이동

xargs

위키백과, 우리 모두의 백과사전.

xargs
운영 체제유닉스, 유닉스 계열
종류명령어

xargs유닉스유닉스 계열 운영 체제의 명령어로 표준 입력을 통해 명령 줄을 만들고 실행하는 데 사용한다. 버전 2.6.23 이전의 리눅스 커널에서는 긴 목록의 매개변수가 명령어를 통해 이용하지 못하는 경우도 간혹 있으므로[1] xargs는 변수 목록을 여러 하부 목록으로 잘게 나누어서 받아들일 수 있게 한다.

예를 들면, 다음 명령어들은 /path 아래에 파일들이 너무 많이 있을 경우 "Argument list too long"이란 메시지를 내며 실행되지 않는다.

 rm /path/*

또는

 rm `find /path -type f`

그러나, (같은 역할을 하는) 다음 명령어는 파일 개수와 상관없이 실행된다.

 find /path -type f -print0 | xargs -0 rm

이 예제에서, find는 파일이름의 리스트를 갖는 xargs를 입력으로 받는다. xargs는 이 리스트를 세부리스트로 나누면서 각각의 리스트에 대해서 rm을 호출한다. 이 방법은 같은 역할을 하는 다음의 명령어 보다 더 효율적이다.

 find /path -type f -exec rm '{}' \;

위 명령어에서는 각각의 파일에 대해 rm이 호출된다.[2]

같이 보기

[편집]

각주

[편집]
  1. http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#Argument-list-too-long
  2. 참고로, 근래의 find 명령어에서는, xargs의 기능을 다음과 같이 대체시킬 수 있다.
     find /path -type f -exec rm '{}' +
    

외부 링크

[편집]