Find text patterns in text and binary files like .txt, .html, .doc or .xls with a free open source command line tool for Windows, Mac OS X and Linux.

sfk find [opts] singledir word [word2] [word3] ... [-names]

search text in text files. if multiple words are given
then only areas containing all words are listed.

this is a basic command to search only static words.
type sfk xfind to use wildcards and expressions.

options
   -arc       XE: include content of .zip .jar .tar etc. archives
                  as deep as possible, including nested archives.
              XD: demo will read first 1000 bytes of each entry.
   -qarc      quick read top level archives but not nested ones.
   -case      search case sensitive. default is case insensitive.
              for details type: sfk help nocase
   -bin       do not autodetect file content, process all as binary.
              can also be used for floating text files (one linefeed per
              paragraph, not per line). may produce unwanted line breaks
              with short-lined text.
   -len=n     increase the line length for text extracted from binary
              to find longer strings. maximum is 600 approx.
   -wide      same as -len=300
   -delim=.,; set delimiters to enable soft word wrapping.
              default is to soft wrap only on white space.
   -hidden    include hidden and system files.
   -c         case-sensitive search (not default).
   -lnum      list line numbers of hits.
   -nocol     disable color highlighting of output (sfk help colors).
   -names     list only names of files containing at least one hit.
   -notnames  list only names of files not containing any hit.
   -count     list no. of matching lines per file. implies -names.
              requires -text option, cannot be used with binary files.
   -quiet     do not show "scan" progress info.
   -pure      do not list filenames, list only text hits without indent.
              default when specifying a single file as first parameter.
   -verbose   tells in detail what find is actually searching for.
   -nocconv   disable umlaut and accent character conversions during
              output to console. "sfk help opt" for details.
   -firsthit  show only first matching result per file.
   -justrc    print nothing to terminal, just set return code.
   -head=n    read only first n text lines from files.

search limitations within binary data
   by default, only lines up to 80 characters are extracted
   from binary data, so strings longer than this may not be found.
   this can be changed by option -len=n or -wide.

pattern support
   no wildcards or slash patterns are supported, with one exception:
   if you need to find patterns starting with "-" or "+", prefix
   them with backslash \ to avoid misinterpretation as options.

return codes for batch files
   0 = no matches, 1 = matches found, >1 = major error occurred.
   see also "sfk help opt" on how to influence error processing.

aliases
   sfk findbin  same as sfk find but reads also binary files.

see also
   --- open source commands ---
   sfk xfind     search  wildcard text in   plain text files
   sfk ofind     search  in office files    .docx .xlsx .ods
   sfk xfindbin  search  wildcard text in   text/binary files
   sfk xhexfind  search  in text/binary with hex dump output
   sfk extract   extract wildcard data from text/binary files
   sfk filter    filter  and edit text with simple wildcards
   sfk find      search  fixed    text in   text        files
   sfk findbin   search  fixed    text in   text/binary files
   sfk hexfind   search  fixed    text in        binary files
   sfk replace   replace fixed    text in   text/binary files
   --- freeware commands ---
   sfk view      GUI tool to search text as you type
   --- xe commercial commands ---
   sfk replace   replace fixed    text with high performance
   sfk xreplace  replace wildcard text in   text/binary files
   sfk help xe   about SFK XE and xreplace with SFK Expressions.

web reference
   http://stahlworks.com/sfk-find

examples
   sfk find . foo bar include
      search text files in current dir for the words foo+bar+include.
      note that the short form syntax supports one directory name,
      and any number of text patterns, but no file name patterns.

   sfk find -pat text1 text2 -dir src1 src2 -file .cpp .hpp
      searches within the specified directories and file masks.

   sfk list src +find -verbose \-pat \\-foo \+list
      find lines containing words "-pat", "\-foo" and "+list"
      in all files of directory src, with verbose search infos.

   sfk find testfiles class +view
      search "class" within "testfiles", and show results
      interactively in Depeche View ("sfk view" for details).
 
example output:

   sfk find testfiles bardriver

   testfiles\FooBank\BarDriver\include\BarDriver.hpp :
      class BarDriver
       BarDriver ( );
       ~BarDriver ( );
   testfiles\FooBank\BarDriver\source\BarDriver.cpp :
      BarDriver::BarDriver( )
      BarDriver::~BarDriver( )
      void BarDriver::runDrawThread( )
   testfiles\FooBank\DB\source\DBController.cpp :
      #include "FooBank/BarDriver/include/BarDriver.hpp"
   testfiles\FooBank\GUI\source\FooGUI.cpp :
      #include "FooBank/BarDriver/include/BarBottle.hpp"
   testfiles\Formats\10-dir-list.txt :
      C:\sfk\testfiles\FooBank\BarDriver
      C:\sfk\testfiles\FooBank\BarDriver\include
      C:\sfk\testfiles\FooBank\BarDriver\source
      C:\sfk\testfiles\FooBank\BarDriver\include\BarBottle.hpp
      C:\sfk\testfiles\FooBank\BarDriver\include\BarDriver.hpp
      C:\sfk\testfiles\FooBank\BarDriver\include\BarGlass.hpp
   testfiles\Formats\12-foo-jam.txt :
      testfiles\FooBank\BarDriver\include\BarBottle.hpp
      testfiles\FooBank\BarDriver\include\BarDriver.hpp
      class BarDriver
       BarDriver ( );
       ~BarDriver ( );
      testfiles\FooBank\BarDriver\include\BarGlass.hpp
      testfiles\FooBank\BarDriver\include\BarMug.hpp
      testfiles\FooBank\BarDriver\source\BarBottle.cpp
      testfiles\FooBank\BarDriver\source\BarDriver.cpp
      BarDriver::BarDriver( )
      BarDriver::~BarDriver( )
      void BarDriver::runDrawThread( )
      testfiles\FooBank\BarDriver\source\BarGlass.cpp
      testfiles\FooBank\BarDriver\source\BarMug.cpp

see also:

   finding classfiles using sfk list, find and alias.