>  기사  >  운영 및 유지보수  >  Linux에서 xargs 사용법에 대한 자세한 설명

Linux에서 xargs 사용법에 대한 자세한 설명

巴扎黑
巴扎黑원래의
2017-08-22 13:57:522368검색

xargs는 Linux에서 매우 유용한 명령입니다. 다른 명령과 함께 사용되는 경우가 많으며 매우 유연합니다.

xargs는 명령에 매개변수를 전달하는 필터이자 여러 명령을 결합하는 도구입니다. 필터와 명령으로 처리할 수 있을 만큼 작은 청크로 분할합니다. 따라서 이 명령은 역참조를 대체하는 강력한 방법이기도 합니다. 일반적으로 너무 많은 매개변수를 사용하는 명령을 대체하면 xargs는 일반적으로 성공합니다.

xargs의 기본 명령은 echo입니다. 이는 파이프를 xargs에 전달하는 것을 의미합니다. 입력에는 줄 바꿈과 공백이 포함되지만 xargs 처리를 통해 줄 바꿈 및 공백은 공백으로 대체됩니다. 예:

bash$ ls -l

total 0

-rwxr-xr-x 2 root root 4096 2009- 02-23 090218.txt

-rwxr-xr- x 2 루트 루트 12288 2009-06-08 090607.txt

bash$ ls -l |

bash$ find ~/ mail -type f | /sent-mail-jul-2005: (Linux 문서 프로젝트 사이트, rtf 버전)

./sent-mail-jul-2005: 제목: Bozo의 Windows/Linux 기사에 대한 비판

. .

ls | xargs - p -l gzip은 gzip을 사용하여 한 번에 하나씩

참고: 흥미로운 xargs 옵션은 -n NN이며, NN은 매개변수 수

ls | xargs -n 8 echo에서 현재 파일의 모든 파일을 나열합니다.

참고: 또 다른 유용한 옵션은 -0입니다. find -print0 또는 grep - lZ를 사용하면 공백이나 따옴표가 포함된 인수를 처리할 수 있습니다.

find / -type f -print0 | xargs -0 grep -liwZ GUI | xargs -0 rm -f

grep -rliwZ GUI / | -0 rm -f

위 두 줄 모두 "GUI"가 포함된 파일을 삭제하는 데 사용할 수 있습니다.

-i는 xargs에 전달된 find 결과가 {}로 대체된다는 의미입니다.

-I i와 비슷하다고 생각합니다. -i는 -I {}로 대체될 수 있다고 할 수 있습니다.

-p Interactively 질문 y 명령의 각 실행을 확인합니다.

-t는 실행 전에 각 명령을 에코합니다.

매개변수 -s 및 -x도 있습니다. 자세한 내용은 설명서를 확인하세요.

다음은 이 파일의 줄 수를 계산하려는 또 다른 예입니다.

$ file * | grep ASCII | cut -d":" -f1 | 2_reco_14491.trc

43 dba102_rvwr_14518.trc

77122 total

(참고: 위 작업은 다음 명령으로도 완료할 수 있습니다.)

$ wc -l 'file * | grep ASCII | cut -d":" -f1 | grep ASCII | cut -d":" -f1'

이 xargs 버전은 개념을 설명하는 데 사용됩니다. Linux는 여러 가지 방법으로 동일한 작업을 수행할 수 있으며 상황에 가장 적합한 방법을 사용합니다.

이 방법을 사용하면 디렉터리의 파일 이름을 빠르게 바꿀 수 있습니다.

$ ls | xargs -t -i mv {} {}.bak -i 옵션은 xargs에게 {}를 각 항목의 이름으로 바꾸도록 지시합니다. -t 옵션은 명령을 실행하기 전에 xargs에 명령을 인쇄하도록 지시합니다.

또 다른 유용한 작업은 vi를 사용하여 편집할 파일을 여는 것입니다.

$ file * | grep ASCII | cut -d":" -f1 | xargs vi

이 명령은 vi 파일 열기를 사용합니다. 하나씩. 이 명령은 여러 파일을 검색하고 편집을 위해 열어야 할 때 매우 편리합니다.

또한 여러 옵션이 있습니다. 아마도 가장 유용한 것은 작업을 대화형으로 만드는 -p 옵션일 것입니다.

$ file * | grep ASCII | cut -d":" -f1 | dba102_mmnl_14497.trc

dba102_reco_14491.trc dba102_rvwr_14518.trc ?.. .

여기서 xarg를 사용하려면 각 명령을 실행하기 전에 확인해야 합니다. "y"를 누르면 명령이 실행됩니다. 파일을 삭제하거나 덮어쓰는 등 파일을 손상시키고 복구할 수 없는 작업을 수행할 때 이 옵션이 유용할 수 있습니다.

-t 옵션은 실행할 명령을 표시하는 상세 모드를 사용하며 디버깅 중에 매우 유용한 옵션입니다.

xargs에 전달된 출력이 비어 있으면 어떻게 되나요? 다음 명령을 고려하십시오.

$ file * | grep SSSSSS | cut -d":" -f1 ; 두 번째 줄에 표시된 대로 xargs에 대한 입력은 -t | 자세한 옵션). 이것이 도움이 될 수 있지만 처리할 항목이 없으면 xargs를 중지할 수 있습니다.

$ file * | grep SSSSSS cut -d ":" -f1 | xargs -t -r wc -l $

실행할 항목이 없으면 명령이 종료됩니다.

rm 명령(xargs 명령에 인수로 전달됨)을 사용하여 파일을 삭제한다고 가정합니다. 그러나 rm은 제한된 수의 인수만 허용합니다. 매개변수 목록이 해당 제한을 초과하면 어떻게 되나요? xargs의 -n 옵션은 단일 명령줄의 인수 수를 제한합니다.

아래에서는 각 명령줄을 두 개의 인수로만 제한하는 방법을 보여줍니다. 다섯 개의 파일이 xargs ls -ltr 에 전달되더라도 한 번에 두 개의 파일만 ls -ltr 에 전달됩니다.

$ 파일 * | grep ASCII | cut -d":" -f1 | 1 oracle dba 738 8월 10일 19:18 dba102_cjq0_14493.trc

-rw-r--r-- 1 oracle dba 2410225 8월 13일 :31 Alert_DBA102.log

ls -ltr dba102_mmn l_14497.trc dba102_reco_14491.trc

-rw-r------ 1 oracle dba 5386163 8월 10일 17:55 dba102_mmnl_14497. trc

-rw-r-- --- 1 oracle dba 6808 8월 13일 05:21 dba102_reco_14491.trc

ls- ltr dba102_rvwr_14518.trc

-rw-r----- 1 oracle dba 2087 8월 10일 04:30 dba102_rvwr _14518.trc

이 방법을 사용하면 디렉터리에 있는 파일의 이름을 빠르게 바꿀 수 있습니다.

위 내용은 Linux에서 xargs 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.