मुझे लगता है कि इनपुट के रूप में अगले एक पर एक कमांड के परिणाम को पारित करने के ये सामान्य तरीके हैं।
ये तीनों कैसे काम करते हैं? या कुछ वेबसाइट / URL क्या हैं?
मुझे लगता है कि इनपुट के रूप में अगले एक पर एक कमांड के परिणाम को पारित करने के ये सामान्य तरीके हैं।
ये तीनों कैसे काम करते हैं? या कुछ वेबसाइट / URL क्या हैं?
जवाबों:
टाइप करने के लिए पहली चीजें:
man find
man xargs
find
डिफ़ॉल्ट रूप से मानक आउटपुट में आदेश प्रिंट परिणाम है, इसलिए -print
विकल्प सामान्य रूप से की जरूरत नहीं है, लेकिन -print0
एक 0 (शून्य) बाइट के साथ फ़ाइल नामों को अलग करती है ताकि नाम रिक्त स्थान या नई-पंक्तियों से युक्त सही ढंग से व्याख्या की जा सकती।
-exec
विकल्प कुछ आप xargs के बजाय का उपयोग कर सकते है - ढूंढें आदेश यह पाता प्रत्येक आइटम के लिए एक कमांड निष्पादित करता है।
xargs
आदेश पढ़ता अंतरिक्ष या न्यू लाइन द्वारा अलग किए गए तार (आमतौर से खोज आदेश है, लेकिन वे कहीं से भी आ सकता है) और प्रत्येक स्ट्रिंग के लिए कुछ आदेश निष्पादित करता है।
यदि xargs को -0 विकल्प के साथ चलाया जाता है , तो यह आउटपुट द्वारा NULL-पृथक स्ट्रिंग्स की अपेक्षा करेगाfind ... -print0
Xargs का लाभ यह है कि यह स्ट्रिंग्स को एक साथ समूहित कर सकता है, ताकि यह केवल n के बजाय एक या दो बार कमांड को निष्पादित करे ।
तो सामान्य उपयोग में:
find start_directory -name '*.txt' | xargs ls -l
लगता है फ़ाइल नामों की सूची है, और xargs की तरह आदेश जारी होगा:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
जो आपके आदेश जारी करने से अधिक तेज़ है:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
ध्यान दें कि xargs को वर्तमान खोज कार्यान्वयनों की अधिक आवश्यकता नहीं है जो संभवतः इस POSIX सिंटैक्स का समर्थन करते हैं:
find directory -name '*.txt' -exec ls -l {} +
जो सरल है और xargs संस्करण की तुलना में थोड़ा तेज है।
find directory -name '*.txt' | xargs ls -l
निम्नलिखित लेख देखें:
लिनक्स और यूनिक्स उदाहरणों के साथ कमांड ट्यूटोरियल खोजते हैं
xargs: कमांड लाइन तर्क कैसे नियंत्रित और उपयोग करें