ভূমিকা: আমি -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'
;
এই উদাহরণগুলিতে ব্যবহার না +
করে ভাল কাজ করে (তবে স্পষ্টতই অন্য কিছু করে)।
পসিক্স থেকে :
-exec utility_name [argument ...] ;
-exec utility_name [argument ...] {} +
... কেবলমাত্র একটি <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".