Ö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 -exec
ile 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 of
IEEE PASC Interpretation 1003.2 #210
ve 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".