2011-02-01 19 views
11

पर रीडायरेक्ट करने के लिए मैं $ PWD -name 'filename' ढूंढ रहा हूं। vim -'खोज' कमांड के आउटपुट को 'vim'

विम संपादक में फ़ाइल फ़ाइल नाम खोला जाने की उम्मीद है। लेकिन यह काम नहीं कर रहा है। इस मामले में, मुझे यकीन है कि नाम 'फ़ाइल नाम' नाम से केवल एक फ़ाइल मौजूद है।

इसके अलावा परिणाम का परिणाम stdout पर पूरा पथ देता है।

+0

'कमांड का उपयोग कर | vim -' 'कमांड' से आउटपुट पढ़ने के लिए vim बताता है और इसे एक बफर में डाल देता है। (उन फ़ाइलों को खोलने के विरोध में।) – idbrii

+0

@pydave मैंने आपकी टिप्पणी में '-' को याद किया। जरूरी! –

+1

@pydave संयोग से, 'vim <(कमांड)' बैश प्रक्रिया प्रतिस्थापन का उपयोग करके वही करता है, और यह केवल vim से अधिक के साथ काम करता है। जैसे दो निर्देशिकाओं के बीच मतभेदों को देखने के लिए, 'diff <(ls -l dir1) <(ls -l dir2) < –

उत्तर

20
vim "$(find "$PWD" -name 'filename')" 

या

find "$PWD" -name 'filename' -exec vim {} \; 

(आप "$PWD" ड्रॉप कर सकते हैं, वैसे। find डिफ़ॉल्ट रूप से वर्तमान निर्देशिका से खोज शुरू होता है।)

+0

धन्यवाद रोमन .. इससे मदद मिली .. –

+1

यह मेरे लिए काम नहीं करता है। 'vim" $ ("$ PWD" -name 'फ़ाइल नाम') ढूंढें "" एक नई फ़ाइल खोलती है जिसका नाम खोजने से सभी फ़ाइल नाम आउटपुट का एक संयोजन है। यह ओएसएक्स पर है। –

+0

आह। ओपी निर्दिष्ट करता है कि सिर्फ एक मिलान फ़ाइल है। इसलिए मेरा आपत्ति कम हो गई है। –

7

find . -name 'filename' -print0 | xargs -0 vim

भी काम करना चाहिए। आप xargs पर पढ़ना चाह सकते हैं, जो जानने के लिए एक आसान बात है।

+1

यह मेरे लिए काम नहीं करता है। 'ढूंढो। -नाम 'उपयोगिता' -प्रिंट 0 | xargs -0 vim' इसके बजाय एक नई फाइल खोलता है, जिसका नाम आउटपुट का एक संयोजन है। यह ओएसएक्स पर है। –

+0

आह। ओपी निर्दिष्ट करता है कि सिर्फ एक मिलान फ़ाइल है।इसलिए मेरा आपत्ति कम हो गई है –

0

@ idbrii की टिप्पणी में आपका उल्लेख है, लेकिन मेरी पसंदीदा है:

find . -name 'filename' -type f -exec vim {} \+ 

यह अपने आप ही बफर :next और :prev साथ नेविगेट करने के लिए तैयार में पाया प्रत्येक फ़ाइल को खोलता है। ओएसएक्स पर परीक्षण किया गया, लेकिन मुझे काफी यकीन है कि यह लिनक्स पर भी काम करेगा।

संबंधित मुद्दे