how to list the biggest or most recent files in a directory tree, under Windows, Mac OS X and Linux, using the free sfk list command.

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.

   -nosub     do not list sub folder contents
   -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]
   -kbytes    or -kb lists sizes in kbytes instead of bytes
   -mbytes    or -gbytes lists sizes in mbytes or gbytes
   -kbpure    list without "kb" postfix
   -xsize     show mixed size infos depending on file size
   -stat      show statistics (number of files, dirs, bytes)
              and tell if hidden files or dirs were skipped.
   -juststat  show no filenames, just statistics.
   -nofollow  or -nofo does not follow symbolic directory links.
              use this if list runs in an endless recursion.
   -withdirs  list also directories
   -justdirs  list just directories
   -hidden    list also hidden or system files
   -arc       list contents of well known zip, tar.gz and
              tar.bz2 archives as deep as possible, including
              nested archives. type "sfk help opt" for the
              list of well known file extensions.
   -qarc      quick list archives, lists only archive entries
              at the top level, skipping nested archives.
   -xarc      list contents of any zip file, regardless of
              file extension, and tar.gz and tar.bz2 files.
              reads the first bytes of every file and will
              therefore perform slower then -arc.
   -qxarc     quick list any archive content.
   -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
   -skiplate=n  sort by time, select all except newest n
   -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.
   -abs[olute]   list all filenames with full absolute path.
   -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.
   -upat      unix style exclusion syntax with : instead of !
              e.g. -subdir :/tmp does the same as -subdir !\tmp
   -upat2     also support wildcard % instead of *
   -tomake .ext  select only files that have no, or an older,
                 counterpart file with extension .ext
                 in the same folder.
   -tomake outdir\$base.ext  select only files that have no or
              an older counterpart file in outdir with .ext.
              see "sfk run" for example: .wav to .mp3 conversion

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.

return codes for batch files
   0   nothing found
   1   any files or dirs found

   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".
   sfk today        same as "sfk list -today".
   sfk big          same as "sfk list -big".
   sfk old          same as "sfk list -old".
   sfk small        same as "sfk list -small".
   sfk times        same as "sfk list -times".

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.

web reference

more in the SFK Book
   the SFK Book contains a 60 page tutorial, including
   sfk dir and list examples with input, command and output.
   type "sfk book" for details.

   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"      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 ..\ -@
      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 soundlib .wav -tomake outdir\$base.mp3
      list all .wav files in folder soundlib that have no
      or an older .mp3 file counterpart in folder outdir.
      see "sfk run" for the full -tomake example.
   sfk load files.txt +list -noerr
      from a list of filenames keep only filenames that exist
   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). [27]
   sfk larc +view
      show content listing of zip file in Depeche View,
      to search filenames interactively ("sfk view" for details).
   sfk times mydir .txt
      list times of all .txt files within mydir
   sfk sel -flist mylist.txt -time -size
      read filenames from mylist.txt and show their time and size
   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 sys. 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 sys. 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.

examples with output:

   sfk list -late tfiles

      lists the most recent files within the directory tree "tfiles",
      including their date/time of last modification as the
      first column, sorted by modification time. example output:

      2006-11-26 14:52:00 tfiles\BaseLib\Trace\include\Trace.hpp
      2006-11-26 14:56:12 tfiles\FooBank\DB\include\DBController.hpp
      2006-11-26 14:56:20 tfiles\FooBank\DB\source\DBController.cpp
      2006-11-26 14:58:40 tfiles\Formats\
      2006-11-26 14:58:59 tfiles\Formats\19-jartest.jar
      2006-11-26 15:10:20 tfiles\Formats\20-tab-data-line.txt
   sfk list -big testfiles

      list the biggest files of "testfiles", sorted by size.

          39 testfiles\Formats\20-tab-data-line.txt
         202 testfiles\BaseLib\Trace\include\Trace.hpp
         237 testfiles\FooBank\DB\include\DBController.hpp
         532 testfiles\FooBank\DB\source\DBController.cpp
        8864 testfiles\Formats\
        8943 testfiles\Formats\19-jartest.jar

   sfk list -zip tdir

      list all files of "tdir", and the content of all .zip
      and .jar files found within:

      tdir\Formats\\Formats/17 blank dir/