exec
div에서 {} +
의 의미를 알고 싶습니다. > 명령, {} +
와 {} \;
의 차이점은 무엇입니까? 정확히 말하면이 둘의 차이점은 무엇입니까?
find . -type f -exec chmod 775 {} + find . -type f -exec chmod 775 {} \;
댓글
Answer
;
(세미콜론) 또는 +
(더하기 기호)를 사용해야
/ 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
에 대한 모든 다음 인수는 명령에 대한 인수로 간주됩니다.문자열
{}
는 현재 파일 이름으로 대체됩니다. e 처리 중입니다. -
는 가능한 최소한의 명령을 실행합니다 (인수가 함께 결합되므로).
xargs
명령이 작동하는 방식과 매우 유사하므로 한 줄당 최대 인수 제한을 초과하지 않도록 명령 당 가능한 많은 인수를 사용합니다.예 :
$ find /etc/rc* -exec echo Arg: {} "+" Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot
명령 줄은 선택한 각 파일 이름을 끝에 추가하여 작성됩니다.
명령 내에서
{}
의 한 인스턴스 만 허용됩니다.
참조 :
Comments
- 차이점이 있습니다 . 주요한 차이점이 있습니다. user1116056 ' s 답변을 참조하세요.
li>
답변
명령어 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
에 따라 :
-exec 명령 {} + -exec 조치의 변형은 선택된 파일에서 지정된 명령을 실행하지만 명령 행은 마지막에 선택된 각 파일 이름을 추가하여 작성됩니다. 명령의 총 호출 수는 일치하는 파일 수보다 훨씬 적습니다. 명령 줄은 xargs가 명령 줄을 빌드하는 것과 거의 같은 방식으로 빌드됩니다. 명령 내에서‘{}’의 인스턴스는 하나만 허용됩니다. 이 명령은 시작 디렉토리에서 실행됩니다.
man find(1)
에 자세히 설명되어있어 누구나 쉽게 찾을 수 있습니다. ' 게으르지 마십시오.man exec
에서 검색했습니다!{} +
사용법을 본 적이 없습니다. 나는 일반적으로 xargs를 사용합니다 (그리고 종종find ... -print0 | xargs -0 ...
)