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.