Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Does anyone know a quick and easy way to use Notepad++'s "find in files" (or other feature) to find files that do not contain a string?

For example:

List all files in c:\inetpub\mywebsite that do not contain "footer.asp"

share|improve this question

migrated from stackoverflow.com Feb 18 '10 at 7:59

This question came from our site for professional and enthusiast programmers.

1  
How about writing a quick console app to do it? –  Russ Cam Feb 17 '10 at 22:59
    
Have you tried grep? –  fre0n Feb 18 '10 at 0:00
add comment

5 Answers

You could always use the good old DOS / Command prompt and do something like this:

find /c /i "footer.asp" c:\inetpub\mywebsite\*.* | find ": 0" /v

This will give you a list of the number of times that the search term occurs in the files in the directory, the second find operation that the first is piped through makes it even more sexy by filtering out the results from the first that you aren't interested in.

You might want to change the * . * to *.asp though if you are only hunting through ASP files and you are only interested in looking through ASP files.

FIND doesn't work with recursing sub directories unfortunately but you could experiment with the slightly more complicated FINDSTR command if this doesn't do the trick.

share|improve this answer
add comment

While it is a great tool, I don't think you can do this in Notepad++.

This Python script will print out the filenames of any non-matches:

import glob
import os

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

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

    for f in files:
        fh = open(f,'r')
        fc = fh.read()
        if "footer.asp" not in fc:
            print "no match found in", f
        fh.close()

if __name__ == '__main__':
    main()
share|improve this answer
add comment

Install cygwin, use grep:

Load the cygwin bash shell:

grep -Rv "footer\.asp" /cygdrive/c/inetpub/mywebsite

Where R is recursive and v inverts the match

share|improve this answer
1  
How can I get the file path only in result using your cygwin code? –  Nam G VU Apr 27 '11 at 12:45
add comment

The entire capability of Notepad++ is encompassed within the set of community plugins that Notepad++ provides you access to. If you have a recent version of Notepad++, pull down the menu called "Plugins" and choose "Plugin Manager". Then, in that list of plugins you can browse through them all and try to find something close to what you need.

I think the most important plugin to have is TextFX followed by the XML plugin.

Also, in the Find dialogue of Notepad++ is a regular expression option. It would be an advanced topic, but its possible your answer lies there.

share|improve this answer
add comment

Just open up all files in tabs, then from the find menu (with a search criteria) click "Find In All Opened Documents". I regularly find this feature useful.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.