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.

Can I search for files which contain a specific string in a folder if that folder is not in the search index?

So, lets say folder 'textFiles' is not in the index. I navigate to this folder in Windows explorer. I type '.ini' in the search box I want to see a result list containing only 'b.txt'

FOLDER C:\textFiles\

FILE  a.php  
CONTENT once twice thrice mice moose monkey

FILE b.txt
CONTENT mingle muddle middle.ini banana beer

FILE c.spo
CONTENT sellotape stapler phone book

I do not have permission to add folders to the Windows index and I do not have permission to install or run any executables that did not ship with the server or approved applications.

I'd be happy with a Windows native command line solution if necessary?

share|improve this question

2 Answers 2

up vote 3 down vote accepted
+50

You can do this with the command line tool findstr.exe provided by Microsoft.

  1. Open a command prompt and navigate to c:\textfiles

  2. run command findstr /L /M /C:"ini" *.*

    note: you can add /S to search all subdirectories

Full details on FINDSTR

  FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurrences of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

For full information on FINDSTR regular expressions refer to the online Command
Reference.
share|improve this answer
    
I see what you did there... :D –  Tom Wijsman Apr 2 '12 at 11:55
    
Thanks! Should have thought of that myself. Bounty awarded –  G-. Apr 2 '12 at 11:55
    
What did I do? .. –  G-. Apr 2 '12 at 11:57
1  
@G-.: That was referring to Jeremy, how he used a "smart @$#" approach while we came with less feasible solutions to this. It's always nice to have a third person come around and take the bone (bounty) away from the other ones that are fighting... –  Tom Wijsman Apr 3 '12 at 15:10

The easiest solution is to turn off Windows Search momentarily, if you have permissions:

  1. net stop wsearch

  2. Do your search in the folder in Windows Explorer, it will search without index.

  3. net start wsearch

While this works for small folders, you might encounter problems with larger ones.

An alternative for searching file contents

Windows Grep bases itself of the linux grep idea, by providing a GUI that allows you to see matching lines; this allows you to quickly look through files looking for the various occurences and their context:

It provides quite some options for searching, so would fit for larger or more complex folders too:

It also has an easy wizard if you don't bother seeing all the settings, and you can configure how the text results display (line numbers, show part/whole line, fixed font, ...)

An alternative for searching file names

Search Everything is one of the smallest search engine for Windows and is thus easy to fetch and run, it has a very clean and simple user interface allowing you to very quickly index files and search among them. It has a minimal resource usage and does real-time updating if you keep it open, so it even fits as a replacement to Windows Search if you want to...

I have a total of 904,108 files and folders which is quite a lot compared to the usual user, and when I type something like Super User it displays that instantly. Indexing doesn't take long either; so, it's a matter of just opening it up waiting a few seconds and have instant search at your finger tips.

As an example, you could show all executables in a folder like this: *.exe "C:\Program Files"

share|improve this answer
    
While Search Everything is wonderful when it works, it doesn't do text searches as demanded by the poster. It also has a built-in limit of something over 1 million on the number of files on the disk it can handle, beyond which it becomes unusable, and also unless running with Windows it may take rather long to initialize its search database. In my contact with the developer regarding these issues, he indicated that development has stopped but he doesn't intend to make it open source. –  harrymc Mar 27 '12 at 18:11
    
Have ran Search Everything on our 64 bit file server and that does still work, where is the exact limit you are talking about? Windows Grep seems to be a savior? Shall we talk about completeness over random assumptions? You seem to think not being complete leads to higher quality? Condider what over? That medicine game that you are attempting to be playing? Boring, huh? Quality > Quantity. –  Tom Wijsman Mar 27 '12 at 19:31
    
Maybe you should also tell the poster why using grep to look for '.ini' is not a good idea. –  harrymc Mar 28 '12 at 7:55
    
@harrymc: Because we are looking for content here, valuable content... –  Tom Wijsman Mar 28 '12 at 11:33
1  
Thank you for your advice. However, as mentioned I can't install additional executables on the server. "wsearch" doesn't appear to be a valid service on my installation. –  G-. Apr 2 '12 at 11:53

Your Answer

 
discard

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.