प्रोग्राम को डेयर बफर में फाइल डालें


10

मेरे पास फ़ाइल नामों की एक सूची है (पूर्ण पथ के साथ) और मैं फ़ाइलों के इस सेट को सूचीबद्ध बफ़र बनाना चाहता हूं। मुझसे यह कैसे होगा?

मैं फ़ाइल नामों की एक सूची से एक Dired बफर कैसे बनाऊँ?

बाहरी निर्भरता का उपयोग किए बिना।


कृपया स्पष्ट करें। क्या आपकी सूची में तार a) उन फ़ाइलों के नाम हैं जिन्हें आप बनाना चाहते हैं, या b) फ़ाइल की सामग्री (वह चीज़ जिसके लिए आपके पास एक पूर्ण पथ है)?
दान

@Dan पूर्ण पथ वाले फ़ाइल नाम की सूची। सिर्फ फिल्मी नाम।
तू डो

1
अगर मैं आपको सही तरीके से समझता हूं, तो आप (find-file your-directory-path)प्रासंगिक diredबफर प्राप्त करने के लिए उपयोग कर सकते हैं (जैसे, (find-file "/tmp/")आपकी tmpनिर्देशिका को diredबफर में खोल देगा )।
दान

1
इन टिप्पणियों में आपने जो कहा है, उसके आधार पर मैंने आपके प्रश्न को संपादित किया है। यदि मुझे यह गलत लगा हो तो बेझिझक रोलबैक करें।
मालाबार

3
यदि आप फ़ाइल की वस्तुओं के बारे में पूछना चाहते हैं, तो यह एक बहुत ही कम जवाब के साथ एक पूरी तरह से अलग सवाल है: कोई भी नहीं है। :-)
मालाबार

जवाबों:


20

C-h f diredआपको जवाब बताता है। बस dired, DIRNAMEतर्क के रूप में पास करें , एक सूची जिसकी कार के रूप में Dired बफ़र नाम आप चाहते हैं (कोई स्ट्रिंग) और cdr के रूप में फ़ाइल नाम की सूची जिसे आप बफ़र में सूचीबद्ध करना चाहते हैं। आम तौर पर, आप निरपेक्ष फ़ाइल नामों का उपयोग करना चाहते हैं। उदाहरण के लिए:

(dired (list "My Dired Buffer Name*"     ; The Dired buffer name
             "/usr/foo/file1.el"         ; First file
             "/usr/bar/toto/some-file.c" ; Second file
             "/whatever/directory/"      ; Third is a directory
             "/a/file/somewhere.zzz"))   ; Fourth

अपने मंच पर निर्भर करता है, किसी भी के नाम अस्तित्वहीन फ़ाइलों और निर्देशिकाओं आप में प्रवेश पर ध्यान नहीं दिया जा सकता है (सूचीबद्ध नहीं), या कोई त्रुटि उत्पन्न हो सकती हैं। यदि आप उपयोग करते हैं तो पूर्व होता है ls-lisp.el(उदाहरण के लिए MS Windows)। आप ls-lispकिसी भी प्लेटफ़ॉर्म के उपयोग को मजबूर कर सकते हैं , अगर आपको यह पसंद है (लेकिन ls-lispकम lsविकल्प हैं), तो ऐसा करके:

(setq ls-lisp-use-insert-directory-program nil)
(require 'ls-lisp)

यदि आप लाइब्रेरी Dired + ( dired+.el) का उपयोग करते हैं, तो आप सूची में फ़ाइलों और निर्देशिकाओं का चयन कर सकते हैं: बस diredएक गैर-सकारात्मक उपसर्ग तर्क दें (यानी <= 0)। फिर आपको उन निर्देशिकाओं और फ़ाइल नामों के लिए बार-बार संकेत दिया जाता है जिन्हें आप सूचीबद्ध करना चाहते हैं। आप फ़ाइल-नाम वाइल्डकार्ड (यानी *ग्लोबिंग के लिए) का उपयोग कर सकते हैं, जिसमें मिलान करने वाली फाइलें और निर्देशिकाएं शामिल हैं। C-gइनपुट समाप्त करने के लिए उपयोग करें ।

दूसरे शब्दों में, एकल निर्देशिका को सूचीबद्ध करने के बजाय, Dired बफर किसी भी संख्या में निर्देशिकाओं और फ़ाइल नामों को सूचीबद्ध कर सकता है, जो अलग-अलग निर्देशिका पेड़ों से भी संबंधित हो सकते हैं।

(एक गैर-नकारात्मक उपसर्ग arg (यानी,> = 0) आपको lsलिस्टिंग स्विच के लिए संकेत देता है । इसलिए एक शून्य उपसर्ग arg आपको स्विच और फ़ाइलों / सूची दोनों के लिए संकेत देता है: पहले lsस्विच और फिर फ़ाइलें / dirs।


वैसे मैं इसे एलिस्प में करना चाहता हूं, कमांड का उपयोग नहीं करना। मैं बस एक साधारण कोड स्निपेट चाहता हूं जो एक फ़ाइल नाम को (पूर्ण पथ के साथ) Dired बफर में एक प्रविष्टि में बदल देता है, उसी तरह जैसे मैं (insert ...)एक बफर में पाठ डालने के लिए कैसे उपयोग करता हूं ।
Tu Do

1
@tudo: diredएक विशिष्ट कार्य है। बस इसका मूल्यांकन करें: (dired '("my-list" "/home/rekado/dev/script.scm" "/home/rekado/another-file"))और आपको इन फ़ाइलों से युक्त एक बिंदीदार बफ़र मिलता है, जैसा @Drew ने लिखा है।
रेकडो

@ ट्रेकडो। थैंक्स। अब मैं सही ढंग से उत्तर को फिर से लिखता हूं, जैसा आपने कहा है। मैं सिर्फ तुम्हारी तरह एक ऐलिस कोड स्निपेट देखना चाहता हूं, और मुझे लगा कि ड्रू ने मुझे एक यूजर कमांड का जवाब दिया, जब मैंने उसे देखा।
Tu Do

@ ड्रू कृपया रेकाडो का उदाहरण जोड़ें। आपके उत्तर के लिए धन्यवाद।
तु डू

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

2

यहां ऐसा करने के लिए एक फाइल प्रति पंक्ति के साथ फाइलों की सूची एक बफर में है, तो एक कमांड है।

(defun dired-virtual-vanilla ()
  (interactive)
  (dired (cons "*Dired*" (split-string (buffer-string) "\n" t))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.