서문 : -exec {} \;& 의 차이점을 이해합니다 -exec {} +. 나는 또한 문제가없는 등을 , 나는의 의미에 대한 그냥 궁금입니다 find.
종료 할 때 -exec함께 인수 +하는 대신 ;, 우리는 필요 로 이것을 종료 {} +예를 들어, :
# FreeBSD find
$ find . -type f -exec cp {} /tmp +
find: -exec: no terminating ";" or "+"
# GNU find is even more cryptic:
$ find: missing argument to `-exec'
;이 예제에서 사용 하는 대신 +잘 작동합니다 (그러나 분명히 다른 일을합니다).
에서 POSIX :
-exec utility_name [argument ...] ;
-exec utility_name [argument ...] {} +... 두 문자 "
{}" 만 포함하는 인수 바로 뒤에 오는 <plus-sign>만이 기본 표현식의 끝을 잘립니다. <plus-sign>의 다른 용도는 특별하게 취급되지 않습니다.
즉,를 사용할 때 +명령 은 로 끝나야합니다 {} +.
왜 이런거야? 왜 그런지 +아닌지 ;? 처음에는을 포함하는 +파일 이름과의 충돌을 피할 수 있다고 생각 했지만 파일 이름이 ;잘 작동 하는 것 같습니다. 이 제한이 임의적이라고 믿기가 어렵습니다 ...
The "-exec ... {} +" syntax adopted was a result ofIEEE PASC Interpretation 1003.2 #210에 따르면 다음 문서에서 자세한 내용을 확인할 수 있습니다.Note that the "+" is only treated as special if it immediately follows "{}". This minimises the chances of causing problems with existing uses of "+" as an argument with "-exec".