gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Tools & Command

[Linux command] xargs 명령어 옵션 및 사용법

gbmin 2023. 5. 22. 11:53

xargs 명령어는 Unix 및 Linux 시스템에서 사용되는 명령어다. xargs는 이전 명령어의 출력, 입력에서 가져온 데이터를 받아서 다른 명령어에 전달하는 데 사용된다. xargs는 복잡한 명령어를 실행하거나 대량의 파일을 처리하는 데 도움이 된다.
xargs 명령어는 주로 파이프(|)를 사용하여 이전 명령어의 출력을 받는다. 이후 xargs는 이 데이터를 공백이나 줄 바꿈 문자를 구분자로 사용하여 인수(argument)로 분리한 후 새로운 명령어에 전달한다.

 

- 목차
1. 기본사용방법
2. 주요 옵션
3. 사용예제

 

 

1. 기본 사용 방법

command | xargs [options] [command]

 


2. 주요 옵션

옵션 설명
-0, --null 입력을 null 문자 ('\0')로 구분
-afile,--arg-file=file 파일로부터 입력을 읽음
-ddelim,--delimiter=delim 입력을 구분할 구분자를 지정
-Eeof-str,--eof[=eof-str] 입력의 끝으로 처리될 문자열을 지정
-Ireplace-str,--replace[=replace-str] 입력에서 대체 문자열을 찾아 명령어에서 대체
-l[max-lines],--max-lines[=max-lines] 한 번에 실행할 입력 라인 수를 제한
-nmax-args,--max-args=max-args 한 번에 실행할 인수의 최대 개수를 지정
-Pmax-procs,--max-procs=max-procs 병렬로 실행할 최대 하위프로세스 수를 지정
-r,--no-run-if-empty 입력이 없으면 명령어 실행을 건너뜀
-smax-chars,--max-chars=max-chars 입력 줄의 최대 크기를 제한
-t,--verbose 실행되는 명령어를 출력
-x,--exit 명령어가 실패하면 xargs 실행을 중지
-p,--interactive 사용자에게 각 명령어 실행을 확인

 


3. 사용 예제

현재 디렉터리에서 확장자가. txt인 파일을 찾고, null 문자를 구분자로 사용하여 xargs로 전달한 후 rm 명령어로 삭제.

파일 이름에 공백이나 특수 문자가 포함된 경우에도 안전하게 처리할 수 있음.

find . -name "*.txt" -print0 | xargs -0 rm


files.txt파일에 기록된 파일목록을 읽고, xargs를 사용하여 각 파일을 rm명령어로 삭제.

파이프(|)를 사용하지 않고도 파일목록을 xargs로 전달할 수 있음.

xargs -a files.txt rm


"example1, example2, example3"문자열을 구분자로 쉼표(,)를 사용하여 xargs로 전달하고, 각 요소를 echo명령어로 출력.

-d 옵션을 사용하여 입력을 원하는 구분자로 분리할 수 있음.

echo "example1,example2,example3" | xargs -d "," echo


"example1 example2 example3" 문자열을 공백으로 구분하여 xargs로 전달하고,-I옵션을 사용하여 {}를 입력에서 찾아 각각의 요소로 대체.

이후 echo 명령어로 각 요소를 출력.

echo "example1 example2 example3" | xargs -I {} echo Fruit: {}


ls로 현재 디렉터리의 파일목록을 생성하고, -l1 옵션을 사용하여 한번에 하나의 파일을 xargs로 전달.

이후 echo명령어로 각파일 이름을 출력

ls | xargs -l1 echo File:


현재 디렉터리에서 확장자가. txt인파일을 찾고,-P4옵션을 사용하여 최대 4개의 병렬프로세스로 xargs명령어를 실행.

이후 각 파일에 대해 wc-l 명령어로 라인수를 계산하여 출력.

find . -name "*.txt" | xargs -P 4 -I {} wc -l {}

 

ls로 현재디렉터리의 파일목록을 생성하고, grep명령어를 사용하여"pattern" 과 일치하는 파일을 찾음.

이후 xargs를 사용하여 rm 명령어로 파일을 삭제함. 입력이 없으면 xargs실행을 건너뜀.

ls | grep "pattern" | xargs -r rm


ls로 현재디렉터리의 파일목록을 생성하고,-s1024옵션을 사용하여 입력줄의 최대크기를 1024바이트로 제한함.

이후 각 파일 이름을 echo명령어로 출력함.

ls | xargs -s 1024 echo


ls로 현재디렉터리의 파일목록을 생성하고,-t 옵션을 사용하여 xargs가 실행하는 rm명령어를 출력함.

명령어가 어떻게 실행되는지 확인할 수 있음.

ls | xargs -t rm


ls로 현재디렉터리의 파일목록을 생성하고,-x옵션을 사용하여 rm명령어가 실패하면 xargs실행을 중지함. 오류가 발생하면 즉시 종료.

ls | xargs -x rm