find -exec {} + 매개변수 목록 제한

find -exec {} + 매개변수 목록 제한

최대 매개변수 목록 크기에 도달하면 xargs모든 파일이 포함될 때까지 새 목록이 계속 생성된다는 것을 알고 있습니다.

그러나 find -exec <command> {} +목록의 크기가 출력을 초과하면 동일한 작업을 수행합니까, 아니면 작동하지 않습니까 getconf ARG_MAX?

답변1

예, find -exec ... {} +각 호출에서 최대 인수 목록 크기를 초과하지 않고 모든 인수를 수용할 수 있도록 필요한 만큼 지정된 명령을 실행합니다. 이는 다음으로 인해 발생합니다.POSIX:

기본 표현식이 <더하기 기호>로 구분되는 경우 기본 표현식은 항상 true로 평가되며 기본 표현식이 평가되는 경로 이름은 컬렉션으로 집계됩니다. [...] 두 문자 ""만 포함하는 인수는 {}집계된 경로 이름 집합으로 대체되며, 각 경로 이름은 집계 순서에 따라 호출 유틸리티에 별도의 인수로 전달됩니다.두 개 이상의 경로 이름 집합의 크기는 유틸리티 실행으로 인해 시스템의 {ARG_MAX} 제한이 초과되지 않도록 제한되어야 합니다.

(강조).

답변2

동일한 작업을 수행합니다. 즉, using은 -exec ... {} +일괄적으로 발견된 경로 이름을 사용하여 주어진 유틸리티를 한 번 이상 실행합니다. 이것이 바로 이 구문의 목적입니다.

관련 정보