`Find` आउटपुट से कई फाइलें कैसे खोलें?


10

मुझे पता है कि मैं इस तरह एक dir में पाया कई फ़ाइलों को खोल सकते हैं:

find -name *.foo -xargs <command> {} \;

यह काम करता है, लेकिन जब एक ही समय में गेडिट में टेक्स्टफाइल्स का एक गुच्छा खोलने की कोशिश की जाती है, तो यह उन्हें क्रमिक रूप से खोलता है (जब एक फ़ाइल बंद हो जाती है, तो अगला एक खोला जाता है)।

मैं एक ही समय में उन सभी फाइलों को खोलना चाहूंगा। इसे कैसे प्राप्त किया जा सकता है?

जवाबों:


15

एक साथ कई फ़ाइलों पर कार्रवाई करने के लिए find, +इसके बजाय का उपयोग करें \;:

find . -name '*.foo' -exec gedit {} +

Zsh के साथ, या bash if4 के साथ यदि आप अपने shopt -s globstarमें डालते हैं, तो आप उपनिर्देशिका में पुनरावृत्ति ~/.bashrcकरने के **/लिए उपयोग कर सकते हैं :

gedit **/*.foo

Zsh में कई ग्लोब क्वालीफायर भी हैं जो अधिकांश उपयोगों को बदल सकते हैं find


किसी ने सुझाव दिया कि मैक ओएस एक्स पर इसे कैसे चलाया जाए?
औरिलाब

@ कंडी अपने आप से हल। लेकिन अगर कोई व्यक्ति कुछ छोटा करने का प्रस्ताव देता है, या खिड़कियों के बजाय अलग टैब में खोलने के लिए SublimeText को मजबूर करता है, तो यह बहुत अधिक आश्चर्य होगा।
andilabs

@ कंडी यह SublimeText के साथ एक मुद्दा है, आपको इसे एक अलग धागे के रूप में पूछना चाहिए।
गिल्स एसओ- बुराई को रोकना '

वैसे भी मुझे लगता है कि यह सटीक बैश प्रारूप के बारे में है, क्योंकि अगर मैं उदाहरण के लिए चलता हूं तो open -a SublimeText admin.py forms.pyयह दो टैब के साथ एक विंडो में खुलता है।
औरलैब्स

2

मैक ओएस एक्स बैश पर आप कुछ इस तरह से चला सकते हैं:

for file in $(find . -name "*.py"); do open -a SublimeText $file; done. 

एक कमी यह है कि यह नए टैब का उपयोग करने के बजाय उदात्त की नई विंडो में खुलता है।


0

मुझे लगता है कि इस मामले में आप उपयोग कर सकते हैं

find ./ -name \*.foo | xargs gedit

1
यदि फ़ाइल नाम में विशेष वर्ण (व्हाट्सएप या \'") हैं, तो यह काम नहीं करेगा , क्योंकि xargsइसके इनपुट को इस तरह से उद्धृत करने की आवश्यकता है जो findउत्पादन नहीं करता है। या तो उपयोग करें find … -print0 | xargs -0 …, या सरल का उपयोग करें find … -exec … {} +
गिलेस का SO-

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