유용한 예가 있는 Linux의 xargs 명령

유용한 예가 있는 Linux의 xargs 명령

2022-10-18 last update

6 minutes reading xargs command linux
xargs는 표준 입력에서 명령줄을 빌드하고 실행하는 Linux/Unix의 강력한 명령입니다. 명령의 출력을 받아 다른 명령의 인수로 전달합니다. xargs는 공백이나 줄 바꿈으로 구분된 표준 입력을 사용하고 항목 뒤에 오는 인수를 사용하여 명령을 한 번 이상 실행합니다. 표준 입력의 빈 줄은 무시됩니다. 구문
xargs [OPTION]... COMMAND [INITIAL-ARGS]...
여기에서 COMMAND는 INITIAL-ARGS 인수와 입력에서 읽은 더 많은 인수로 실행됩니다.

xargs 명령 옵션

xargs 명령은 제한된 수의 명령줄 인수를 제공하지만 기능을 활용하기에 충분합니다.
  • -0, --null – 항목이 공백이 아닌 null로 구분됩니다
  • .
  • -a, --arg-file=FILE – 표준 입력이 아닌 FILE에서 인수를 읽습니다.
  • -d, --delimiter=CHARACTER – 입력 스트림의 항목이 공백이 아닌 CHARACTER로 구분됩니다
  • .
  • -E END – 로그인 EOF로 문자열을 설정합니다. 문자열이 발견되면 나머지는 무시됩니다.
  • -L, --max-lines=MAX-LINES – 명령줄에서 입력으로 사용할 최대 줄 수(공백 아님) 지정
  • -n, --max-args=MAX-ARGS – 명령줄당 최대 인수 지정
  • -P, --max-procs=MAX-PROCS – 한 번에 실행할 최대 프로세스 지정
  • -p, --interactive – 명령을 실행하기 전에 프롬프트와 대화식으로 프로세스를 실행합니다
  • .
  • -r, --no-run-if-empty – 입력 인수가 비어 있으면 명령을 실행하지 마십시오.
  • -t, --verbose – 모든 명령을 실행하는 화면에 인쇄
  • xargs 명령 예

    예 1. 다른 폴더에 많은 수의 파일을 복사합니다. 때때로 긴 파일 목록을 복사해야 하는 경우가 있었습니다. 이 경우 cp 명령이 실패했습니다. "인수 목록이 너무 깁니다"오류와 함께. xargs를 사용하여 해당 작업을 수행할 수 있습니다.
    find /backup/ -type f | xargs -n1 -i cp {} /var/www/backup/ 
    
    예 2: 폴더에서 여러 파일 삭제.때로는 폴더에서 많은 수의 파일을 삭제해야 합니다. 아래 예는/var/log 디렉토리에서 모든 .log 파일을 삭제합니다.
    find /var/www/tmp/ -type f | xargs rm -f 
    
    위의 명령은 이름에 공백이 있는 파일을 제거하지 못했습니다. xargs 명령에서 공백을 처리하려면 아래 명령을 시도하십시오.
    find /var/www/tmp/ -type f -print0 | xargs -0 rm -f 
    
    예 3: 여러 파일의 줄 수를 계산합니다. 아래 예는/opt 디렉토리 및 해당 하위 디렉토리의 각 .txt 파일에 대한 줄 수를 계산합니다.
    find /opt -name "*.txt" | xargs wc -l 
    
    이름에 공백이 있는 파일을 처리하려면 다음 명령을 사용하십시오.
    find /opt/ -name "*.log" -print0 | xargs -0 wc -l 
    
    예 4: 모든 구성 파일을 백업합니다. 시스템의 모든 구성 파일(확장자 .conf)을 백업하려면 아래 명령을 사용하십시오.
    find / -name "*.conf" |  xargs tar czf  config.tar.gz 
    
    ls -l config.tar.gz 
    
    -rw-r--r--. 1 root root 193310 Apr  1 13:26 config.tar.gz
    
    예 5. xargs와 함께 사용자 정의 구분 기호를 사용합니다. xargs 명령과 함께 사용자 지정 구분 기호를 사용할 수도 있습니다. 기본적으로 공백과 새 줄을 구분 기호로 사용합니다. -d 매개변수를 사용하여 구분자를 정의합니다.
    echo "1,2,3,4,5" | xargs -d, echo 
    
    출력:
    1 2 3 4 5
    
    예 6: xargs를 사용하여 별도의 줄에 출력을 표시합니다. 예 5에서 출력이 한 줄로 표시되면 각 출력을 별도의 줄에 표시하도록 지정할 수도 있습니다.
    echo "1,2,3,4,5" | xargs -d, -L 1 echo 
    
    출력:
    1
    2
    3
    4
    5
    
    예 7: 파일 이름 또는 경로의 공백 처리. 이름의 공백을 처리하려면 -print0을 find 명령과 함께 사용하고 -0을 xargs 명령과 함께 매개변수로 사용하십시오.
    find /tmp -print0 | xargs -0 -L 1 echo