xargs는 표준 입력으로부터 데이터를 받아서, 그 데이터를 명령어의 인자로 전달하는 유닉스 및 리눅스 명령어 유틸리티
일반적으로 xargs는 | 를 사용하여 다른 명령어의 출력을 입력으로 받는다.
이렇게 함으로써, xargs는 하나의 명령어가 처리될 수 있는 것보다 더 많은 양의 데이터리를 처리할 수 있게 해준다
.
xargs의 주요 사용 사례 중 하나는 find, grep, ls 등의 명령어로부터 나온 많은 수의 파일명이나 데이터를 다른 명령어에 전달할 때이다. 예를 들어, 특정 유형의 파일을 찾아서 모두 삭제하거나, 편집하고 싶을 때 xargs를 사용할 수 있다.
옵션
-a : 표준 입력이 아닌, 지정된 파일에서 인자를 읽어 명령어를 실행하는 데 사용
예시
# 현재 위치에 file1.log, file2.log, file3.log 디렉토리가 있고 search.txt가 있다고 가정
# cat search.txt
출력: file1.log
file2.log
file3.log
# xargs -a search.txt ls -l 를 수행하면 search.txt에 있는 값들이 ls -l의 인자값으로 인식
# 아래의 명령어와 동일한 결과
ls -l file1.log file2.log file3.log
출력: file1.log:
total 0
file2.log:
total 0
file3.log:
total 0
-d : 입력 항복을 특정 구분자로 나눌 수 있음 기본값은 공백
예시
cat search.txt
출력: file1.log:file2.log:file3.log
### : 로 구분되어 있는 file1.log, file2.log, file3.log 출력
cat search.txt | xargs -d : echo
출력: file1.log file2.log file3.log
-n: 지정된 숫자만큼의 인수를 한 번에 처리하도록 제한하는 데 사용
예시
cat numbers. txt
**출력:** 1
2
3
4
5
6
7
8
9
10
cat numbers.txt | xargs -n 2
**출력:** 1 2
3 4
5 6
7 8
9 10
-p: 사용자가 각 명령을 실행하기 전에 확인을 요청하는 기능을 제공
예시
echo "file1.txt file2.txt file3.txt" | xargs -p rm -rf
**출력:** rm -rf file1.txt file2.txt file3.txt ?
-P: xargs가 지정된 수의 프로세스를 동시에 실행
예시
echo "file1.txt file2.txt file3.txt file4.txt file5.txt" | xargs -n 2 -P 2 rm
-n 2: 한 번에 2개의 파일 이름을 rm 명령어에 전달 즉, rm 명령어는 한 번에 2개의 파일을 삭제
-P 2: 최대 2개의 프로세스를 동시에 실행 즉, 두 개의 rm 명령어가 동시에 실행
I: 입력 항목의 자리를 특정 문자열로 대체할 수 있게 해주는 기능
예시
xargs -i [자리 표시자] [명령어]
echo "file1.log file2.log" | xargs -I {} cp {} {}.bak
cp {} {}.bak 명령어는 {} 자리 표시자를 사용하여 입력 항목을 복사할 파일명과 백업 파일명에 대체
결과적으로 file1.log는 file1.log.bak으로, file2.log는 file2.log.bak으로 복사
참고
리눅스 명령어 1. xargs란? (tistory.com)
[Linux] xargs를 이용한 일괄 명령어.. : 네이버블로그 (naver.com)
[LINUX] 📚 xargs 와 pipe 차이점 완벽 정복 (표준입력 / 인자 차이) (tistory.com)
'Linux' 카테고리의 다른 글
ulimit와 limits.conf (0) | 2024.09.04 |
---|---|
커널 파라미터란? (0) | 2024.09.04 |
가상 메모리란 (0) | 2024.08.27 |
Could not retrieve host: mirrorlist.centos.org; Unknown error (1) | 2024.08.27 |
awk (0) | 2024.08.21 |