{} +
명령의 의미와 exec
와 의 차이점을 알고 싶습니다 . 이 둘의 차이점은 정확히 무엇입니까?{} +
{} \;
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
답변1
쉘 명령을 종료/호출하려면 ;
(세미콜론) 또는 (더하기 기호)를 사용해야 합니다.+
-exec
execdir
;
(세미콜론)과 (더하기 기호)의 차이점은 +
인수가 find의 -exec
/ -execdir
인수로 전달되는 방식입니다. 예를 들어:
사용
;
여러 명령을 실행합니다(각 매개변수에 대해 별도로),예:
$ 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
명령줄은 선택한 각 파일 이름을 끝에 추가하여 구성됩니다.
{}
이 인스턴스는 명령에 하나만 허용됩니다.
또한보십시오:
답변2
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
답변3
에 따르면 man find
:
-명령 실행 {} +-exec 작업의 이 변형은 선택한 파일에서 지정된 명령을 실행하지만 명령줄은 선택한 각 파일 이름을 끝에 추가하여 구성됩니다. 명령의 총 호출 수는 일치하는 파일 수보다 훨씬 적습니다. . 명령줄은 xargs가 명령줄을 작성하는 것과 거의 동일한 방식으로 작성됩니다. 명령에는 "{}" 인스턴스가 하나만 허용됩니다. 이 명령은 시작 디렉터리에서 실행됩니다.