Linux

[Linux] xargs 명령어를 이용한 다양한 예제

IT-PAPA 2023. 3. 28. 06:30
728x90
반응형

리눅스에서 xargs 명령어는 표준 입력으로부터 입력된 데이터를 받아 다른 명령어에 전달하는 역할을 합니다. 

이를 통해 대용량의 데이터를 처리하는 작업을 보다 효율적으로 처리할 수 있습니다. 

아래는 xargs 명령어의 다양한 예제입니다.

옵션 설명 예제
-n 입력 받을 인자의 최대 수를 설정합니다. find . -name "*.log" | xargs -n 2 cp -t ./backup
-I 인자 대체 문자열을 지정합니다. ls *.txt | xargs -I {} mv {} ./textfiles
-t 명령어를 실행하기 전 명령어를 출력합니다. echo "*.log" | xargs -t rm
-p 각 명령어 실행 전 확인 메시지를 출력합니다. find / -type f -name "passwd" | xargs -p -n 1 cp -t ./backup
-r 입력 인자가 없는 경우 명령어를 실행하지 않습니다. echo "" | xargs -r echo "No arguments"
-s 명령어가 실행될 때 입력 인자의 최대 크기를 지정합니다. find / -type f -print0 | xargs -0 -s 1024 ls -l
-0 NULL 문자(\0)로 구분된 입력을 처리합니다. find / -type f -print0 | xargs -0 rm

 

파일 삭제

find . -name "*.log" | xargs rm

현재 디렉토리 아래에 있는 확장자가 ".log"인 파일을 모두 삭제합니다.

 

명령어 실행

echo "1 2 3 4 5" | xargs -n 2 sh -c 'echo $1+$2=$(($1+$2))' sh

1부터 5까지의 숫자를 하나의 문자열로 입력하고, -n 옵션을 이용해 입력받을 인수의 개수를 지정하였습니다. 이후 sh -c 명령어를 이용해 입력받은 2개의 인수를 더한 값을 출력합니다.

cat file_list.txt | xargs -I {} sh -c 'cp {} {}.backup'

file_list.txt에 있는 파일 목록을 읽어와서 각 파일을 백업 파일로 복사합니다.

 

폴더 이동

ls -d */ | xargs -I {} mv {} /path/to/new/directory/

현재 디렉토리 아래에 있는 모든 폴더를 찾아 /path/to/new/directory/ 로 이동합니다.

 

특정 문자열 치환

cat list.txt | xargs -I {} sed -i 's/foo/bar/g' {}

list.txt 파일 내에 있는 모든 "foo" 문자열을 "bar" 문자열로 변경합니다.

 

병렬 실행

cat list.txt | xargs -P 4 -n 1 sh -c 'command {}'

list.txt 파일 내에 있는 모든 항목에 대해 "command" 명령어를 병렬 실행합니다. -P 옵션은 병렬로 실행할 프로세스의 개수를 지정합니다.

 

명령어 실행 실패 처리 예제

cat file_list.txt | xargs -I {} sh -c 'if mv {} {}.bak; then echo "Success"; else echo "Failed"; fi'


file_list.txt에 있는 파일 목록을 읽어와서 각 파일을 백업 파일로 복사하는데, 파일 복사에 실패할 경우 "Failed"를 출력합니다.
728x90
반응형
LIST