सवाल दो-भाग है:
- कैसे का उपयोग कर कॉल कार्यक्रमों का प्रबंधन करता है
find-execफ़ाइल नाम में एम्बेड किए गए रिक्त स्थान के साथ समस्याओं किए बिना , और
- क्या अच्छा
-print0विकल्प है?
पहले के लिए, findएक सिस्टम कॉल कर रहा है, वास्तव में संबंधित कॉल के एक समूह को "निष्पादन" के रूप में संदर्भित किया जाता है। । यह फ़ाइल नाम को सीधे इस कॉल के तर्क के रूप में पास करता है, जो तब फ़ाइल नाम के बारे में जानकारी खोए बिना सीधे (एक नई प्रक्रिया बनाने के बाद) पारित किया जाता है।
POSIX findसुविधा +को इस प्रकार समझाया गया है, औचित्य में :
SVR4 की findउपयोगिता की एक विशेषता -execप्राथमिक + टर्मिनेटर थी। इसने विशेष वर्णों (विशेषकर नई वर्णों) वाले फ़ाइलनामों को उन समस्याओं के बिना एक साथ समूहीकृत करने की अनुमति दी, यदि ऐसे फ़ाइलनामों को पाइप किया जाता है xargs। अन्य कार्यान्वयन ने इस समस्या को हल करने के लिए अन्य तरीकों को जोड़ा है, विशेष रूप से एक -print0प्राथमिक जो नल बाइट टर्मिनेटर के साथ फाइलनाम लिखा है। यह यहां माना जाता था, लेकिन अपनाया नहीं गया। नल टर्मिनेटर का उपयोग करने का मतलब है कि किसी भी उपयोगिता जो कि खोज के -print0आउटपुट को संसाधित करने जा रही
थी, उसे शून्य टर्मर्स को पार्स करने के लिए एक नया विकल्प जोड़ना होगा जो अब पढ़ा जाएगा।
यह " विशेष रूप से एक -print0प्राथमिक" जीएनयू को संदर्भित करता है findऔर xargsजो समस्या को एक अलग तरीके से हल करता है। यह भी FreeBSD के द्वारा समर्थित है findऔर xargs। यदि आपने कॉल में एक -0विकल्प ( मैनुअल पेज देखें ) जोड़ा है xargs, तो वह प्रोग्राम "नल बाइट" वर्णों द्वारा समाप्त लाइनों को स्वीकार करता है। बदले में, अपने काम करने के लिए निष्पादन-xargs कॉल को कॉल करता है। और फीचर बनाम फीचर के बीच मुख्य अंतर यह है कि पूर्व एक पाइप के ऊपर से फाइलनाम पास करता है, जबकि बाद वाला नहीं करता है। डेवलपर्स लगभग किसी भी सुविधा के लिए उपयोग करता है; पाइप कोई अपवाद नहीं हैं।-print0-0+
वापस ओपी के उदाहरण के लिए, जो एक -tविकल्प का उपयोग करता है cp: जो कि POSIX cp में नहीं पाया जाता है । बल्कि, यह GNU cp द्वारा प्रदान किया गया एक एक्सटेंशन (उर्फ "नॉनस्टैंडर्ड फीचर") है । के -0विस्तार से xargsइस उदाहरण में सुधार नहीं होगा, लेकिन ऐसे अन्य मामले भी हैं जहां इसका प्रभावी ढंग से उपयोग किया जा सकता है - यह ध्यान में रखते हुए कि पोर्टेबल विकल्प है +, जिसे जीएनयू findस्वीकार करता है।
find..execअपने दम पर अजीब फ़ाइल नाम संभाल सकते हैं ..