सवाल दो-भाग है:
- कैसे का उपयोग कर कॉल कार्यक्रमों का प्रबंधन करता है
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
अपने दम पर अजीब फ़ाइल नाम संभाल सकते हैं ..