서문 : -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 of
IEEE 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".