नामों से फाइलें ढूंढना


11

मैं उन सभी फ़ाइलों को कैसे नाम से ला सकता हूं जो एक विशिष्ट रेगेक्स के अनुरूप हैं, एक निर्देशिका पेड़ में, एक एकल बिंदीदार बफर के लिए?

तो मैं एक ही बार में उन सभी का नाम बदल / हटा सकता हूं?


2
क्या आपने 'खोज-नाम-दिनांकित' पर विचार किया है? (वाइल्डकार्ड का उपयोग करता है, रेगेक्स नहीं।)
मार्को वाहल

2
आपको वह उत्तर @MarcoWahl के रूप में प्रस्तुत करना चाहिए। मुझे नहीं पता था कि ऐसा करने की कोई हिम्मत नहीं थी!
टायलर

1
लाइब्रेरी find-dired+.elआपको कमांड का एक उन्नत संस्करण प्रदान करती है find-name-dired। यह वैकल्पिक आर्गन्स को निर्दिष्ट करता है जो खोज से बाहर करने के लिए (1) न्यूनतम और अधिकतम खोज गहराई और (2) पथ निर्दिष्ट करता है।
ड्रू

जवाबों:


11

वाइल्डकार्ड

उपयोग

M-x find-name-dired

एक वाइल्डकार्ड के अनुसार फ़ाइलें प्राप्त करने के लिए।

उदाहरण

"~ / Org /" निर्देशिका में प्रत्यय "org" के साथ सभी फाइलें ढूंढें। निम्नलिखित दर्ज करें

M-x find-name-dired
~/org
*org

और आनंद लो।

नियमित अभिव्यक्ति

उपयोग

M-x find-dired

एक नियमित अभिव्यक्ति के अनुसार फ़ाइलें प्राप्त करने के लिए उपयुक्त तर्कों के साथ।

उदाहरण

"~ / Org /" निर्देशिका में प्रत्यय "org" के साथ सभी फाइलें ढूंढें। निम्नलिखित दर्ज करें

M-x find-dired
~/org
-regex ".*org$"

और आनंद लो।


यह इस प्रक्रिया जहां स्वचालित रूप से जाँच के लिए automatize करना संभव है *orgमैन्युअल रूप से इसे में प्रवेश के बिना
alper

अगर मैं आपको सही ढंग से समझूं तो बहुत संभावनाएं हैं। उदाहरण के लिए, एक विशेष सीच को एक कमांड बनाएं (डिफॉन माय-फाइंड-ऑर्गेनफाइल्स () (इंटरैक्टिव) (फाइंड-नेम-डेयर "~ / myorgs /" "* org") और इसे अपने इनिट फ़ाइल में डालें। फिर Mx my-find-orgfiles RET का उपयोग करें। या यहां तक ​​कि कमांड को एक कुंजी से बांधें।
मार्को वाहल

my-find-orgfiles ()"T" और "Q" // द्वारा अनुसरण किया जा सकता है जो सभी का चयन करता है और लागू होता है? @Marco Wahl
alper

2

नियमित अभिव्यक्ति

रेगेक्स का उपयोग करने के लिए, आप कोशिश भी कर सकते हैं find-lisp-find-dired। यह कमांड स्टैंडर्ड लिब की है। find-lisp , जो पूरी तरह से elisp में लिखा गया है यानी, आपको बाहरी findप्रोग्राम इंस्टॉल करने की आवश्यकता नहीं है ।

उदाहरण के लिए, निम्नलिखित सभी फ़ाइलों को एक्सटेंशन के साथ '.el' निर्देशिका ~ के तहत दिखाता है।

M-x find-lisp-find-dired RET ~/lisp RET \.el\' RET

(मैच सम्मान case-fold-search)।

वाइल्डकार्ड

यह ध्यान देने योग्य है कि अगले Emacs रिलीज़ (v26.1) के बाद से Dired फ़ाइल फ़ाइल तर्क के निर्देशिका भाग में wilcards का समर्थन करता है। इसका मतलब है कि निम्नलिखित काम करता है:

C-x d ~/soft/*/*.c RET

(मैच केस-संवेदी है)।

यह कमांड एक डेयर बफर में एक्सटेंशन '.c' के साथ सभी फाइलों को दिखाता है, '~ / सॉफ्ट' के तहत 2 डेप्थ लेवल । इसका मतलब है कि, '~ / soft / foo / bar.c' जैसी सभी फाइलें सूचीबद्ध होंगी, लेकिन '~ / soft / qux.c' और न ही '~ / soft / foo / baz / qux.c' जैसी फाइलें

वही लेकिन मामला असंवेदनशील:

C-x d ~/soft/*/*.[cC] RET

बक्शीश

यदि आप एक 'ls' के साथ elisp, 'ls-lisp' या 'eshell-ls' में लागू किए गए Dired चल रहे हैं, तो आप निम्न सिंटैक्सिस के साथ वाइल्डकार्ड से मेल खाने वाली सभी फ़ाइलों को पुन: सूचीबद्ध कर सकते हैं :

C-x d ~/soft/**/*.c RET

ध्यान दें '**'। इस स्थिति में वाइल्डकार्ड से मेल खाने वाले '~ / सॉफ्ट' के तहत सभी फाइलें दिखाई जाती हैं, यहां तक ​​कि '~ / सॉफ्ट / qux.c'

हालाँकि, जब आप insert-directory-program वाइल्डकार्ड विस्तार का उपयोग कर रहे होते हैं , सिस्टम शेल द्वारा बनाया जाता है; इसका मतलब है कि, यह पुनरावर्ती '**' सिंटैक्सिस तभी काम करता है जब यह आपके शेल द्वारा समर्थित हो। उदाहरण के लिए zsh इसका समर्थन करता है, लेकिन बैश नहीं करता है। पिछले आदेश को पूरा करने वाले अन्य गोले के रूप में:

C-x d ~/soft/*/*.c RET
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.