답변:
사용 ;(세미콜론) 또는 +(더하기 기호 것은)에 의해 호출 쉘 명령을 종료하기 위해 필수입니다 -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)누구나 쉽게 찾을 수 있도록 매우 자세하게 설명되어 있습니다. 게으르지 마십시오.