खोज / पथ / -exec कमांड '{}' + में क्या + है?


13

क्या है +में find /path/ -exec command '{}' +करते हैं? विरोध के रूप मेंfind /path/ -exec command '{}' \;

जवाबों:


17

'+' चलने के लिए आदेशों की संख्या को कम करने के लिए सभी मिली फ़ाइलों में से एक बड़ी कमांड लाइन बनाता है।

इस मामले को देखते हुए कि एक खोज कमांड में चार फाइलें होती हैं।

find . -type f -exec command '{}' \;

उत्पादन होगा

command file1
command file2
command file3
command file4 

दूसरी ओर

find . -type f -exec command '{}' \+

पैदा करता है

command file1 file2 file3 file4

3
यदि आप जानते हैं xargs, के -exec … {} +रूप में ही करता है -print | xargs …, लेकिन उद्धरण मुद्दों के बिना ( -print0 | xargs -0एक और तरीका है, लेकिन यह कम पोर्टेबल है)।
गिल्स एसओ- बुराई को रोकना '

4

मैन पेज से:

-exec कमांड {} +

-Exec कार्रवाई का यह संस्करण चयनित फ़ाइलों पर निर्दिष्ट कमांड चलाता है, लेकिन कमांड लाइन अंत में प्रत्येक चयनित फ़ाइल नाम को जोड़कर बनाया गया है; कमांड की कुल संख्याओं की संख्या मिलान की गई फ़ाइलों की संख्या से बहुत कम होगी। कमांड लाइन उसी तरह से बनाई गई है जिस तरह से xargs अपनी कमांड लाइन बनाता है। कमांड के भीतर `{} 'के केवल एक उदाहरण की अनुमति है। कमांड को प्रारंभिक निर्देशिका में निष्पादित किया जाता है।


1
आदमी है कि बहुत ... चड्डी है? मुझे लगता है कि इसमें गहराई और स्पष्टता की कमी है।
xenoterracide

यह विचार आँख बंद करके प्रत्येक फ़ाइल के लिए एक प्रक्रिया को अंजाम देने के लिए नहीं है, बल्कि फाइलनामों को एक साथ इकट्ठा करने और कमांड को कम बार कॉल करने के लिए है। एक उदाहरण: 3 अलग-अलग "आरएम FILENAME" प्रक्रियाओं को बनाने के बजाय, यह फाइलनेम को इकट्ठा करता है और "rm FILE1 FILE2 FILE3" करता है।
तन् तेर

IIRC xargs के कुछ संस्करणों में इन नामों को एक निर्दिष्ट सीमा तक एक साथ बैचने का विकल्प है, इसलिए आप इससे लाभान्वित हो सकते हैं, लेकिन जब आपके पास एक बड़ी सूची भी हो, तो अतिप्रवाह से बचें।
केविन केंटु

(खोजें, अपने आप में एक डरावनी छोटी भाषा है!)
केविन कैन्टू

findमुझे एक अर्ध देता है।
मैट अलेक्जेंडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.