How to do things
AI Noob vs. Pro

List biggest files
List newest files
Show subdir sizes
Search in files
Replace word in files
List dir differences
Send files in LAN

Free Open Source:

Swiss File Knife

a command line
multi function tool.

remove tabs
list dir sizes
find text
filter lines
find in path
collect text
instant ftp or
http server
file transfer
send text
patch text
patch binary
run own cmd
convert crlf
dup file find
md5 lists
fromto clip
split files
list latest
compare dirs
save typing
trace http
echo colors
head & tail
find classes
dep. listing
speed shell
zip search
zip dir list

Depeche View
Source Research
First Steps

windows GUI

the d3caster
java game engine

command line
file encryption

free external tools,
zero install effort,
usb stick compliant:

zip and unzip
diff and merge
reformat xml
reformat source

java sources

thread creation

cpp sources

log tracing
mem tracing
using printf


stat. c array
stat. java array
var. c array
var. java array
view all text
as you type
surf over text
find by click
quick copy
multi view
find nearby
find by path
location jump
skip accents
clip match
filter lines
edit text
load filter
hotkey list
receive text
send in C++
send in Java
smooth scroll
touch scroll
fly wxWidgets
fly over Qt
search Java



patch text files by line pattern replacement,

in a revokable way, with automatic backup creation.
- 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-64.exe sfk and chmod +x sfk then ./sfk
- Linux: type mv sfk-linux-64.exe sfk    and chmod +x sfk then ./sfk
  OS X and Linux syntax may differ, check the help within the tool.
SFK The Book - A Long Winters Literature.
sfk patch [-revoke|-redo] yourpatchfile.cpp [-sim|-verify]

search text blocks in file(s) and replace them by other text blocks,
including backup creation and optional restore of original files.

-revoke: undo all patches, by replacing the modified targets
         by the backup files which sfk stores in save_patch.
         the target files are touched afterwards (date/time update)
         to enforce proper recompile. use -keep-dates to avoid this.
-redo  : undo all patches and then re-apply patches.
         best used whenever you change the patchfile itself,
         to have your changes updated in the target files.
-exact-match: by default, leading whitespaces are ignored.
              use this option enforce exact 1:1 line matching.
-keep-dates: by default, revoked files get touched. use this option
             to enforce original file dates (yet windows only).
-sim     : simulate what the patch would do, don't change anything.
-qs      : quick summary, just tell a one-line status.
-stats   : show statistics of select-replace usage.
-verify  : check if an applied patch is still intact.
-nopid   : apply irrevocable patch without [patch-id].
-anyroot : ignore the :root dir entry in a patch file.

patchfile rules:
- patches are executed exactly in the order as given in the patchfile.
- each :from/:to statement is executed exactly once.
- if ANY of the :from/:to statements doesn't match the input,
  the whole file is NOT patched.
- the first :to block for a new target file must contain
  the word [patch-id],
  by using a comment in the target file's syntax, e.g. in
  C++: // [patch-id].
  this marks the file as being patched
  -> sfk will not patch it again.

it is recommended that your patchfiles have the ending .cpp 
  (or .java etc.)
to enable syntax highlighting with your favourite text editor.

sfk patch -example
   shows a detailed patchfile example.
sfk patch -template
   gives a simple, empty patchfile template.
patchfile example, containing all supported patchfile commands:

:patch "enable FooBar testing"
:info makes some stuff public, for direct access by test funcs

:root foosrc

:file include\Foobar.hpp
    bool             isAvailable               (int nResource);
    void             openBar                   (int nMode);
public: // [patch-id]
    bool             isAvailable               (int nResource);
    void             openBar                   (int nMode);
    // returns the application type, 0x00 == not set.
    UInt16           getAppType                ( );
    // returns the application type, 0x00 == not set.
    UInt16           getAppType                ( );
    UInt32           getAppTypeInternal        ( );

:# this is a remark, allowed only outside :file blocks.
:# the above syntax is sufficient for most cases; but now follow some
:# more commands for global replace, file and dir creation, etc.
:# select-replace has 3 parms, and applies changes (parms 2+3) only
:# in lines containing the search term (parm 1).

:file include\Another.cpp
:select-replace /MY_TRACE(/\n"/"/
:select-replace _printf("spam: _printf(_while(0) printf(_
:set only-lf-output
    bool                  existsFile                (char *psz);
    // [patch-id]
    long                  existsFile                (char *psz);

:mkdir sources
:create sources\MyOwnFix.hpp
// this file is generated by sfk patch.

this is outcommented stuff. the skip-end is optional.

an empty patchfile template:

:patch "thepatch"

:root theproject

:file include\file1.hpp
    // [patch-id]

:file sources\file1.cpp
    // [patch-id]

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.

Download the free Depeche View Lite Text Search Tool