मैं निम्नलिखित न्यूनतम स्रोत फ़ाइल हैईटैग एक दूषित TAGS फ़ाइल क्यों उत्पन्न कर रहा है?
$ cat path/xx/yy/fooBar.c
void this_is_a_test(void)
{
}
अगर मैं इस तरह etags चलाने यह ठीक काम करता
$ etags path/xx/yy/fooBar.c
$ cat TAGS
path/xx/yy/fooBar.c,25
void this_is_a_test(1,0
लेकिन अगर मैं खोजने के द्वारा etags चलाने/xargs टैग फ़ाइल दूषित है:
$ find . -name fooBar.c
./path/xx/yy/fooBar.c
$ find . -name fooBar.c | xargs etags
$ cat TAGS
path/xx/yy/fBoBar.c,25
void this_is_a_test(^?1,0
नोट करें कि फ़ाइल नाम fBoBar.c - bogus के रूप में ऊपर दिखाया गया है!
मैं find . -name '*.[ch]' | xargs etags
की तरह कुछ कर रही द्वारा टैग उत्पन्न करने में सक्षम होना चाहते हैं। लेकिन जब मैं ऐसा करता हूं तो अधिकांश फाइलनामों को भ्रष्ट कर रहा है।
किसी भी विचार क्यों यह इस तरह विफल हो रहा है और/या क्या मैं इसे काम करने के लिए कर सकते हैं?
उबंटू ल्यूसिड। Etags emacs23-bin-common 23.1 + 1-4ubuntu7 से है।
संपादित:
fschmitt के प्रश्न के उत्तर में:
$ etags $(find . -name fooBar.c)
$ cat TAGS
path/xx/yy/fBoBar.c,25
void this_is_a_test(1,0
नई जानकारी:
मैं सिर्फ देखा है कि अपने मूल प्रश्न में दो का उपयोग करता है के बीच अंतर से ऊपर है पथ पर अग्रणी .
। और अगर मैं etags ./path/xx/yy/fooBar.c
जैसे ईटैग को कॉल करता हूं, तो यह फ़ाइल को दूषित करता है। तो यह सुनिश्चित करना है कि ईटैग के तर्कों में प्रमुख टैग नहीं हैं। (शायद यह etags में एक बग, क्योंकि प्रलेखन लगभग बिल्कुल मेरी उपयोग पैटर्न का वर्णन है।)
आप picky नहीं हैं, तो आप ऊपर --recurse विकल्प के साथ सभी फ़ाइलों (न केवल ग और ज) चुन सकते हैं: 'etags --recurse .', कम से कम http में: //ctags.sourceforge। नेट/सीटीएजी -5.8। –
@fearless_fool: धन्यवाद! वह विकल्प 'ईटैग' में उपलब्ध नहीं है जो एमएक्स के साथ आता है, लेकिन यह जानना अस्तित्व में है कि मैं अत्यधिक सीटीएजी पर स्विच करना चाहता हूं। – bstpierre
मुझे नहीं पता कि इसका कोई नुकसान है, लेकिन '$ PWD -name' * .c '-o -name' * .h 'के बारे में क्या है। xargs etags'? इस तरह पूर्ण पथ ईटैग को सौंप दिए जाते हैं। –