sfk list [-time] [-size|-size=digits] [...] dir [mask]
sfk sel[ect] -dir dir1 dir2 -file .ext1 .ext2 !.ext3 [...]

   list all or just selected files from a directory tree.
   select is the same, but it ignores command chaining input.

   options:
      -time      show date and modification time
      -flattime  show date and time in a more compact format
      -tab       separate columns by tab characters, not blanks
      -size[=n]  show size of files [n characters wide]
      -stat      show statistics (number of files, dirs, bytes)
                 and tell if hidden files or dirs were skipped.
      -withdirs  list also directories
      -justdirs  list just directories
      -hidden    list also hidden or system files
      -arc       list contents of .zip .jar .ear etc. archives
                 and also .gz, .bz2, .tar, .tar.gz and .tar.bz2
                 as deep as possible, including nested archives.
                 type "sfk help opt" for supported file extensions.
      -qarc      quick list archives, lists only archive entries
                 at the top level, skipping nested archives.
      -sort[=n]  sort by name, list all or last n files
      -sortrev   sort by name, in reverse order
      -late[=n]  sort by time, list latest   [n] files last
      -old[=n]   sort by time, list oldest   [n] files last
      -big[=n]   sort by size, list biggest  [n] files last
      -small[=n] sort by size, list smallest [n] files last
      -minsize=s list only files >= size, like 10b or 100k
      -maxsize=s list only files <= size, like 10m or 4g
                 b=bytes k=kbytes m=megabytes g=gigabytes
      -late=all  sort by time, list all files
      -notime    don't list time, after -late or -old
      -nosize    don't list size, after -big  or -small
      -pure      pure list of filenames, leave out time, size,
                 headline or statistics.
      -quot      surround filenames by double quotes. needed when
                 post-processing filename lists containing blanks.
      -quiet     do not show the "scan" progress information
      -since     list only files since this timestamp, e.g.
                    "2006-01-31 12:15:59" or 20060131121559
                    2006-01-31 or 20060131
                    today : files changed since midnight of today
                    1d    : changed since 1 day, i.e. not counting
                            from midnight, but 24 hours into the past
                    5h, 30m, 10s : 5 hours, 30 minutes, 10 seconds.
      -before    select files modified before that timestamp.
      -today     short replacement for "-since today".
      -usectime  use or list creation time instead of modification time.
                 may not be available on some filesystems.
      -utc       or -gmt lists UTC/GMT time instead of local time.
      -sincedir  compare against another directory, list files that
       or -sd    have been added, have different time, or content.
                 does not list files which have been removed.
      -sinceadd  like -sincedir, list only added files.
      -sincedif  like -sincedir, list only changed files.
                 does not list files with diff. time but same content.
                 does not list added files.
      -sincechg  list files with different content, and added files.
       or -sc    does not list files with diff. time but same content.
      -relnames  list filenames relative to specified directory(s),
                 i.e. strip root directory names at the beginning.
      -tofile x  write all names directly to file x (using less memory
                 than the chain command +tofile x).
      -maxfiles=n      list a maximum of n files only.
      -fileoff[set]=n  from all selected files, list only a subset,
                 starting at index n. first file has index 0.

   important details of file name / extension selection:
      - when specifying a filename pattern beginning with a dot "."
        and no wildcard, only files with this extension will be selected.
      - otherwise the pattern is searched anywhere within the filename.
        to force a filename start comparison, say \pattern (with a slash).
      - filename means the relative filename, not directory or path name.

   command chaining difference between list and select:
      +list accepts files from previous commands. +select ignores them,
      allowing scripts to run many independent selects in one chain.

   aliases:
      sfk dir         same as "sfk list -stat".
      sfk select      same as list, but ignoring chain input.
      sfk larc        same as "sfk list -arc".
      sfk late        same as "sfk list -late".

   see also:
      sfk help select the sfk file selection syntax.
      sfk help opt    for further general options.
      sfk stat        to list directory tree sizes.
      sfk filetime    list all times of a file.

   examples:
      sfk list .
         list all files of current directory and all subdirectories.
      sfk list mydir !.bak !.tmp.txt
         list all files within mydir, except .bak and .tmp.txt files.
      sfk list -dir . -file foo .htm .java*
         this will find and list the following sample filenames:
            thefoobar.dat     - matches anywhere-pattern "foo"
            biginfo.htm       - matches exact extension  ".htm"
            test.java.9.15    - matches anywhere-pattern ".java*"
         the command will NOT list the following sample filenames:
            foosys\thebar.dat - pattern must match filename, not path.
            biginfo.html      - does not match extension ".htm"
      sfk list -dir mydir !tmp !\save\ -file .txt
         list all .txt files within mydir, excluding all sub folders
         having "tmp" in their name, or called exactly "save".
      sfk alias list = sfk list -noop
         after this, just typing "list" lists the current directory.
      sfk list -dir src1 -file .cpp -dir src2 -file .hpp
         list .cpp files from src1, .hpp files from src2.
      sfk list -dir src "*examples*"
         list contents of all directories having a name with "examples",
         located somewhere below src. note that "*examples*" defines a
         path mask, whereas "examples" would be another root directory.
         under linux, patterns with a * wildcard MUST have quotes "".
      sfk list -late -dir . -sub foo -file .jsp .java
         list the most recent .jsp and .java files, in all dirs below
         the current one (.) having "foo" in their pathname.
      sfk list -late -dir . *foo -file .jsp .java
         the same, only shorter to type.
      sfk list -justdirs -dir . *foo* -file .jsp .java
         list all folders having "foo" in their pathname
         and which contain any .jsp or .java files.
      sfk list -sincedir src5 src1 .cpp
         provided that directory src5 is an older copy of src1, list the
         .cpp files that have been added/changed since src5 was created.
      sfk list -pure -late=30 -quot | zip ..\update.zip -@
         collect the latest 30 files from current dir into a zip file,
         using InfoZIP's option "-@" to use a filename list from stdin.
      sfk sel src .bak +del
         select all .bak files in src, then delete them.
      sfk list -nosub -late mydir +sleep 5000 +loop
         list most recent files of mydir every 5 seconds,
         excluding all sub folder contents.
      sfk list . .jpg +count
         tell the number of .jpg files in current directory tree.
      sfk list -nosub -flattime -tabs . .jpg +filter -stabform
         "ren $qcol3 \q$col1$col2-$col3\q" +run "$text"
         rename all .jpg files in current folder to be prefixed by
         their modification time (type whole command in one line).
      sfk larc src.zip +view
         show content listing of zip file src.zip in Depeche View,
         to search filenames interactively ("sfk view" for details).
      sfk list . >lslr
         list files of the current directory and all subdirectories into
         an index text file "lslr" (named after the unix command "ls -lR").
         doing this in a root directory may take some while, but afterwards
         you will find the location of every file in realtime, by simply
         typing "sfk find lslr your_filename_pattern".
      sfk list -qarc -tofile lslrx .
         same as above, but including hidden and system files, as well as
         the first content level of every .zip and .jar file. using -tofile
         instead of ">lslrx" redirection allows you to see a progress info.
         doing this in a root dir like C:\ may produce a filename listing
         of several hundred MB in size.
      sfk list -hidden -arc -tofile lslrxl .
         produce an ultimate file listing, including hidden and system files,
         .zip and .jar contents, .tar, tar.gz and tar.bz2 contents, as well
         as archive contents embedded within archives, like .class files
         embedded within .jar files within a .tar.bz2 archive. running this
         command in a root dir like C:\ may take some hours, and it may
         produce a 1 GB or more file listing, so make sure there is enough
         disk space.
