find / path / -exec 명령 '{}'+의 +는 무엇입니까?


13

무엇 +으로 find /path/ -exec command '{}' +하는가? 반대로find /path/ -exec command '{}' \;

답변:


17

'+'는 실행 된 명령 수를 최소화하기 위해 찾은 모든 파일에서 하나의 큰 명령 행을 작성합니다.

find 명령이 4 개의 파일을 찾는 경우를 고려하십시오.

find . -type f -exec command '{}' \;

생산할 것이다

command file1
command file2
command file3
command file4 

반면에

find . -type f -exec command '{}' \+

생산

command file1 file2 file3 file4

3
당신이 알고있는 경우에 xargs, -exec … {} +같은 수행 -print | xargs …하지만, 인용 문제없이 ( -print0 | xargs -0다른 방법이지만, 덜 휴대용입니다).
— Gilles 'SO- 악마 그만

4

매뉴얼 페이지에서 :

-exec 명령 {} +

이 -exec 조치 변형은 선택된 파일에서 지정된 명령을 실행하지만 명령 행은 선택한 각 파일 이름을 끝에 추가하여 빌드됩니다. 명령의 총 호출 수는 일치하는 파일 수보다 훨씬 적습니다. 명령 행은 xargs가 명령 행을 빌드하는 것과 거의 같은 방식으로 빌드됩니다. `{} '인스턴스는 하나만 허용됩니다. 명령은 시작 디렉토리에서 실행됩니다.


1
그 사람은 매우 ... 간결합니까? 나는 깊이와 명확성이 부족하다는 것을 알았습니다.
— xenoterracide

아이디어는 각 파일에 대해 하나의 프로세스를 맹목적으로 생성하는 것이 아니라 파일 이름을 모아서 명령을 더 적게 호출하는 것입니다. 예를 들어, 3 개의 다른 "rm FILENAME"프로세스를 작성하는 대신 파일 이름을 수집하고 "rm FILE1 FILE2 FILE3"을 수행합니다.
— tante

IIRC 일부 버전의 xargs에는 이러한 이름을 지정된 한도까지 일괄 처리 할 수있는 옵션이 있으므로이 기능을 사용하면 큰 목록이있을 때 오버플로를 피할 수 있습니다.
— Kevin Cantu

(무서운 약간의 언어가 모든 자신이며, 자신을 찾기!)
— 케빈 칸투

find세미를 제공합니다.
— 매트 알렉산더
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.