2010-02-02 19 views
6

मैं सोच रहा था कि नोटपैड ++ की "फ़ाइलों में खोजें" कार्यक्षमता में फ़ाइल फ़िल्टर के भीतर बहिष्करण सूचीबद्ध करना संभव था।नोटपैड ++ फ़ाइल फ़िल्टर

उदाहरण के लिए निम्नलिखित सभी फ़ाइलों में कुत्ते के साथ कुत्ते को प्रतिस्थापित करेगा।

लगाएँ कि: कुत्ता

से बदले: बिल्ली

फिल्टर: * *

मुझे क्या करना चाहते हैं .sh फाइलों में को छोड़कर अन्य सभी फाइलों में बिल्ली के साथ कुत्ते की जगह है।।

क्या यह संभव है?

उत्तर

9

मुझे लगता है कि "नकारात्मक चयनकर्ता" की तरह कुछ नोटपैड ++ में मौजूद नहीं है।

मैं 5.6.6 source code का शीघ्रता से अवलोकन लिया और ऐसा लगता है फ़ाइल चयन तंत्र एक समारोह getMatchedFilenames() कहा जाता है जो रिकर्सिवली एक निश्चित निर्देशिका के नीचे सभी फ़ाइलें, जो बारी में निम्नलिखित समारोह देखने के लिए कॉल के माध्यम से चलाता है करने पर निर्भर करता

bool Notepad_plus::matchInList(const TCHAR *fileName, const vector<generic_string> & patterns) 
{ 
    for (size_t i = 0 ; i < patterns.size() ; i++) 
    { 
     if (PathMatchSpec(fileName, patterns[i].c_str())) 
      return true; 
    } 
    return false; 
} 

जहां तक ​​मेरा निर्धारित कर सकते हैं, PathMatchSpec नकारात्मक चयनकर्ताओं अनुमति नहीं देता: फ़ाइल नाम नमूने का मिलान।

हालांकि a list of positive filters दर्ज करना संभव है। यदि आप .sh को छोड़कर अपनी निर्देशिका में सभी एक्सटेंशन शामिल करने के लिए पर्याप्त रूप से उस सूची को बना सकते हैं, तो आप भी वहां हैं।

शुभकामनाएं!

+1

एक फ़ाइल का आकार है बाहर करने के लिए करता है, तो पैटर्न के साथ शुरू होता है PathMatchSpec का प्रयोग करें - उदाहरण के लिए एक ऋण चिह्न ""। उसे दो बूल चरों की आवश्यकता होगी: मिलान और बहिष्कृत। विधि लूप के भीतर से वापसी नहीं होगी। अंतिम वापसी होगी! बहिष्कृत और मिलान – Rbjz

3

Great answer छोटे से।
दुर्भाग्यपूर्ण है कि नोटपैड ++ ऐसा नहीं कर सकता है।

यह परीक्षण उदाहरण चाल (पायथन) करेगा। Thomas Watnedal को replace विधि धन्यवाद:

from tempfile import mkstemp 
import glob 
import os 
import shutil 

def replace(file, pattern, subst): 
    """ from Thomas Watnedal's answer to SO question 39086 
     search-and-replace-a-line-in-a-file-in-python 
    """ 
    fh, abs_path = mkstemp() # create temp file 
    new_file = open(abs_path,'w') 
    old_file = open(file) 
    for line in old_file: 
     new_file.write(line.replace(pattern, subst)) 
    new_file.close() # close temp file 
    os.close(fh) 
    old_file.close() 
    os.remove(file) # remove original file 
    shutil.move(abs_path, file) # move new file 

def main(): 
    DIR = '/path/to/my/dir' 

    path = os.path.join(DIR, "*") 
    files = glob.glob(path) 

    for f in files: 
     if not f.endswith('.sh'): 
      replace(f, 'dog', "cat") 

if __name__ == '__main__': 
    main() 
+0

वे ठंडा। और फिर आप स्क्रिप्ट को Nppexec प्लगइन में निष्पादन योग्य की सूची में जोड़ सकते हैं। असली कोडर को जीयूआई की आवश्यकता नहीं है :-) – thomaspaulb