2010-08-18 14 views
25

क्या कोई लाइब्रेरी या फ़ंक्शन है जो emacs lisp के लिए एक बैश-जैसी ग्लोब विस्तार करता है?ग्लोब विस्तार के साथ emacs lisp लिस्टिंग फाइलें

(directory-files-glob "~/Desktop/*") 
> ("/home/user/Desktop/file1" "/home/user/Desktop/file2") 

अगर वहाँ इस तरह के एक समारोह नहीं है वहाँ किसी भी संकेत/यह कैसे लागू करने पर सुझाव दिए गए हैं:

उदाहरण के लिए

?

संपादित करें:

फ़ाइल का विस्तार-वाइल्डकार्ड:

मुझे लगता है कि काफी वास्तव में यह करता है docs भी एक उपयोगी समारोह में पाया है इस समारोह, वाइल्डकार्ड पैटर्न पैटर्न का विस्तार एक लौटने फ़ाइल नामों की सूची जो उससे मेल खाते हैं। directory-files के लिए दस्तावेज़ बाहर

+2

धन्यवाद - फ़ाइल-विस्तार-वाइल्डकार्ड ठीक वही है जो मैं चाहता था – Greg

उत्तर

19

की जांच:

(directory-files "~/Desktop" nil ".") 

नोट: तीसरा तर्क एक रेगुलर एक्सप्रेशन है - ग्लोबिंग नहीं।

यह ग्लोबिंग पैटर्न को नियमित अभिव्यक्तियों में बदलने के लिए सीधे आगे है। eshell जो आप उपयोग कर सकते हैं एक अनुवाद पैकेज के साथ आता है:,

(require 'em-glob) 
(defun directory-files-glob (path) 
    (directory-files (file-name-directory path) 
        nil 
        (eshell-glob-regexp (file-name-nondirectory path)))) 

और अगर आप चाहते हैं eshell करने के लिए पूर्ण जोखिम (निर्देशिका के साथ) ग्लोबिंग है, वहाँ शायद एक तरीका है कि प्राप्त करने के लिए है। उपरोक्त मानते हैं कि ग्लोबिंग भाग पथ के गैर-निर्देशिका भाग में है।

+0

स्पष्ट स्पष्टीकरण और आगे के विचारों के लिए बहुत बहुत धन्यवाद! – pygabriel

3

पैकेज f एक सतत नामकरण योजना के तहत बड़ी मात्रा में फ़ाइल और फ़ाइलपैथ मैनिपुलेशन फ़ंक्शन जोड़ता है। यह एक समारोह f-glob कि वास्तव में क्या करता है:

(f-glob "~/doc/*.org") ; returns a list of files ending with ".org" 
(f-glob "*.org" "~/doc/") ; they all behave the same 
(f-glob "*.org" "~/doc") 
9
नहीं

यकीन है कि क्यों यह शायद अनदेखा किया गया यह 2010 में नहीं बल्कि एक वर्तमान Emacs में Emacs में नहीं था कम से कम वहाँ समारोह file-expand-wildcards

(file-expand-wildcards "~/Desktop/*") 

है जो वही करता है जो आप करना चाहते हैं ..

+0

ओह ने क्यू के संपादन को देखा जो पहले से ही इसमें शामिल है, लेकिन चूंकि मैंने इसे यहां अनदेखा किया है, फिर भी मैं अपना जवाब छोड़ दूंगा –

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