आप शायद कॉल करना चाहते हैं (एक बार, जब आपने सीखा, कि यह संभव है, जो आज हो सकता है)। यह, ज़ाहिर है, केवल तब तक संभव है जब तक आप पाते हैं। एक बार जब आप xargs पर जाते हैं तो यह कार्यक्षेत्र से बाहर हो जाता है।
छोटा उदाहरण, दो फाइलें a.lst और b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
यहां कोई ट्रिक नहीं है - बस यह तथ्य कि दोनों में "फडेल" है, लेकिन केवल एक "फिडेल" शामिल है।
हमें लगता है कि पता नहीं था। हम ऐसी फ़ाइल खोजते हैं जो 2 स्थितियों से मेल खाती हो:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
ठीक है, शायद आप दोनों स्ट्रिंग्स को शर्त के रूप में पारित करने के लिए grep या किसी अन्य प्रोग्राम के लिए सिंटैक्स जानते हैं, लेकिन यह बात नहीं है। प्रत्येक प्रोग्राम जो सही या गलत वापस आ सकता है, एक फाइल को तर्क के रूप में दिया जा सकता है, यहां इस्तेमाल किया जा सकता है - grep सिर्फ एक लोकप्रिय उदाहरण था।
और ध्यान दें, आप का अनुसरण कर सकते -exec लगता है , अन्य खोज आदेशों के साथ की तरह -LS या -delete या कुछ इसी तरह। ध्यान दें, कि डिलीट न केवल rm (फाइल्स को रिमूव करता है) करता है, बल्कि rmdir (डायरेक्ट्रीज को भी हटाता है)।
इस तरह की श्रृंखला को AND के आदेशों के संयोजन के रूप में पढ़ा जाता है, जब तक कि अन्यथा निर्दिष्ट न किया जाए (अर्थात एक -or
स्विच के साथ (और parens (जिसे मास्किंग की आवश्यकता होती है))।
तो आप खोज श्रृंखला नहीं छोड़ रहे हैं, जो एक आसान बात है। -Xargs का उपयोग करने में मुझे कोई फायदा नहीं दिखता है, क्योंकि आपको फाइलों को पास करने में सावधानी बरतनी होती है, जो कुछ ऐसा है जिसे करने की आवश्यकता नहीं है - यह स्वचालित रूप से प्रत्येक फ़ाइल को आपके लिए एकल तर्क के रूप में पारित करता है।
यदि आपको लगता है कि आपको {} ब्रेसिज़ के लिए कुछ मास्किंग की आवश्यकता है , तो मेरे प्रश्न पर जाने के लिए स्वतंत्र महसूस करें जो प्रमाण मांगता है। मेरा दावा है: आप नहीं
find
। आपका बहुत बहुत धन्यवाद!