Swiss File Knife is a supercharged command line tool which crams around 100 functions into a single executable.

The program can search for files by content, or name. It's able to list the contents of directories, create or delete directory trees. And you get a lengthy list of text and file processing options: LF <> CRLF, tab <> space, hex <> binary, hex <> dec, insert string, replace string, sort string, split file, join file, more.

This would be useful in itself, but Swiss File Knife does a whole lot more. The program also includes commands to synchronise a folder tree, find duplicate files, cut video and binary files, create MD5 hashes, send UDP or HTTP requests, download HTTP files, even run instant FTP and HTTP servers.

Most of these commands deliver far more than you'd expect. The List command doesn't just list files in a directory tree, for example: it also supports a host of archive formats. And it's enormously flexible, with more than 35 switches, which can themselves be combined in many different ways, and have their output passed on to other Swiss File Knife commands.

There's also plenty of scripting support, with tools to get user input, run sequences of Swiss File Knife commands, run commands on every file in a folder, run commands in a loop, and more.

Perhaps most surprising of all, though, Swiss File Knife isn't too difficult to learn. There's a lot to explore, but the syntax of each command is relatively straightforward. When listing files, for example, there's no "-n -l -p" garbage: instead you'll use switches like -time, -hidden, -sort, -minsize, -maxsize and so on. You can probably guess what they do already. And if you can't, a truly excellent PowerShell-like local Help system explains all.

1.8.3 brings:

-  sum: detail improvements for index file handling,
        udp message sending, text filter, windows/linux
        unified scripts. easier scripting by sfk tell which
        never sends given text to following commands.
        scripts can now call more nested sub functions.
        bug fixes for run, tail, hexdump.
-  chg: option -upat now also support "/" for start of name
        comparison as in -subdir :/tmp or -file :/tmp
-  chg: "sfk lindex" renamed to "sfk index" for easier use.
        sfk lindex is still supported for compatibility.
-  add: "sfk iname" renamed to "sfk name" for easier use.
        sfk iname is still supported for compatibility.
-  add: sfk udpsend: if a short ip is expanded the full
        target ip is now shown. option -showip to force
        showing of ip instead of host in sent info.
-  add: sfk ip: optional expansion of given short ip.
        chaining support to pass ip text to other commands.
-  add: sfk filter -toupper, -tolower to convert a-z
        to upper- or lowercase. does not convert any
        special characters like accents or umlauts.
-  add: file selection option -tomake outdir\$base.ext
        to select all files having no or an older counterpart
        file in output folder outdir. see "sfk run" for
        an example of .wav to .mp3 conversion with ffmpeg.
-  fix: sfk udpsend, tonetlog could net send to different
        targets in the same command chain or script.
-  add: sfk tell, same as echo but only prints to terminal
        and never sends given text to following commands,
        allowing scripts with fewer "+then" statements.
-  add: sfk data, create random test data records.
-  chg: reduced stack load per call and perline
        allowing more nested calls.
-  fix: sfk dumphelp: now prints main help text first.
-  fix: sfk run with a single string containing # or $
        did nothing.
-  fix: sfk tail under windows: handling of files > 2 GB
        without option -altsize.
-  fix: sfk ... +hexdump unexpected dump of all files
        of current folder.
-  chg: sfk knxdump, knxsend: GA support up to 31/7/255,
        support to send to unicast address.
-  doc: updated list, run, help opt, echo/tell, xed,
        filter, media, call, perline, dupfind

Verdict

An amazing collection of powerful command line tools. Use some individually, string others together in scripts, it's your call. If you make even occasional use of the command line, then go grab a copy of Swiss File Knife right now.