Önsöz: -exec {} \;& arasındaki farkı anlıyorum -exec {} +. Ben de bir sorun yok gibi , ben semantik hakkında sadece merak ediyorum find.
Biten zaman -execile argüman +yerine ;, biz ihtiyacımız vererek bitirmek {} +örneğin:
# FreeBSD find
$ find . -type f -exec cp {} /tmp +
find: -exec: no terminating ";" or "+"
# GNU find is even more cryptic:
$ find: missing argument to `-exec'
Kullanma ;yerine bu örneklerde +eserler cezası (besbelli ama başka bir şey yapar).
Gönderen POSIX'e :
-exec utility_name [argument ...] ;
-exec utility_name [argument ...] {} +... Yalnızca "
{}" iki karakterini içeren bir argümanı hemen takip eden bir <plus-ignign> , birincil ifadenin sonunu noktalayacaktır. <plus-ignign> un diğer kullanımları özel olarak ele alınmayacaktır.
Başka bir deyişle, +komutu kullanırken , komutun bitmesi gerekir{} + .
Bu neden? Ve neden sadece +ve değil ;? İlk başta, a içeren adlarla çakışmaları önlemek belki düşündüm +, ancak dosya adları ;iyi çalışıyor gibi görünüyor? Bu sınırlamanın keyfi olduğuna inanmakta zorlanıyorum ...
The "-exec ... {} +" syntax adopted was a result ofIEEE PASC Interpretation 1003.2 #210ve bu belgede daha fazla ayrıntı bulacaksınız, örneğin: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".