답변:
사용 ;
(세미콜론) 또는 +
(더하기 기호 것은)에 의해 호출 쉘 명령을 종료하기 위해 필수입니다 -exec
/을 execdir
.
;
(세미콜론) 또는 +
(더하기 부호) 의 차이점 은 인수가 find의 -exec
/ -execdir
매개 변수 로 전달되는 방식 입니다. 예를 들면 다음과 같습니다.
using ;
은 여러 명령을 실행합니다 (각 인수마다 별도로)
예:
$ find /etc/rc* -exec echo Arg: {} ';'
Arg: /etc/rc.common
Arg: /etc/rc.common~previous
Arg: /etc/rc.local
Arg: /etc/rc.netboot
다음의 모든 인수
find
는 명령에 대한 인수로 간주됩니다.문자열
{}
은 처리중인 현재 파일 이름으로 바뀝니다.
를 사용 +
하면 가능한 가장 적은 명령이 실행됩니다 (인수가 결합되어 있기 때문에). xargs
명령이 작동 하는 방식과 매우 유사 하므로 한 줄에 최대 인수 제한을 초과하지 않도록 명령 당 가능한 많은 인수를 사용합니다.
예:
$ find /etc/rc* -exec echo Arg: {} '+'
Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot
명령 행은 선택한 각 파일 이름을 끝에 추가하여 빌드됩니다.
{}
명령 내에서 하나의 인스턴스 만 허용됩니다.
또한보십시오:
find 명령이 세 개의 파일 아래에 있다고 가정합니다.
fileA
fileB
fileC
당신이 사용하는 경우 -exec
플러스 (과 +
) 기호,
find . -type f -exec chmod 775 {} +
그것은 될 것입니다 :
chmod 775 fileA fileB fileC
명령 행은 끝에 일치하는 각 파일 이름을 끝에 추가하여 xargs
작성되며, 명령 행 을 빌드 하는 것과 같은 방식입니다 . 명령의 총 호출 수 ( chmod
이 경우)는 일치하는 파일 수보다 훨씬 적습니다.
-exec
세미콜론 ( ;
) 과 함께 사용 하는 경우
find . -type f -exec chmod 775 {} \;
그것은 될 것입니다 :
chmod 775 fileA
chmod 775 fileB
chmod 775 fileC
man find(1)
누구나 쉽게 찾을 수 있도록 매우 자세하게 설명되어 있습니다. 게으르지 마십시오.