Swiss File Knife
a command line
free external tools,
- download the free Swiss File Knife Base from Sourceforge. - open the Windows CMD command line, Mac OS X Terminal or Linux shell. - OS X : type mv sfk-mac-i686.exe sfk and chmod +x sfk then ./sfk - Linux: type mv sfk-linux.exe sfk and chmod +x sfk then ./sfk OS X and Linux syntax may differ, check the help within the tool.
sfk find [opts] singledir word [word2] [word3] ... [-names] case-insensitive text search for text and binary files. if multiple words are given then only areas containing all words are listed. sfk find tries to autodetect if a file is text or binary, adapting the output text formatting. this is a basic command to search only static words. type sfk xfind or xtext 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. -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. -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 ftext same as sfk find but reads only text files. see also --- open source commands --- sfk xfind search wildcard text in text/binary files sfk xtext search wildcard text in text files only 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/binary files sfk ftext search fixed text in text 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 all 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 find -wide -pat http:// .html -dir mydir -file .dat +filter -rep "_*http://_http://_" -rep "_.html*_.html_" find all http://*.hml references in binary .dat files, using -wide to find links beyond 80 characters, then reduce the output to just the link text. 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.
sfk is a free open-source tool, running instantly without installation efforts. no DLL's,
no registry changes - just get sfk.exe from the zip package and use it (binaries for
windows, linux and mac are included).
read more about all sfk functions here.