New for Synchronet v3.19, this JavaScript utility script (filelist.js
) replaces the functionality of the old FILELIST program.
Normally executed via JSexec, this script will generate a list of files from one or more Synchronet system's file databases (filebases) and send the list to stdout
which can be redirected to a file using normal system shell methods, for example:
jsexec filelist -all > allfiles.txt
The output can be plain human-readable text or JSON:
jsexec filelist -all -json > allfiles.json
If no command-line options are provided, this script will show all the file directory internal codes and prompt the operator to type the internal code of the file directory to list.
To display the usage syntax, specify the '-help' option:
usage: [-options] [dir-code [...]] [include-filespec=*] options: -all list files in all libraries/directories -lib=<name> list files in all directories of specified library -ex=<filespec> add filename or spec to excluded filename list -hdr include header for each directory -sort[=prop] enable/configure file sorting -i perform case-insensitive global sorting -reverse reverse the sort order -json[=spaces] use JSON formatted output -new=<days> include new files uploaded in past <days> -p=<list> specify comma-separated list of property names to print -cdt include credit value instead of file size -ext include extended file descriptions -ext=<prefix> specify extended file description prefix -fmt=<fmt> specify output format string (printf syntax) -date=<fmt> specify date/time display format (strftime syntax) -size=<fmt> specify size/byte display format (0-12) -name=<len> specify filename length (default: 12) -pad pad filename with spaces -adate use latest archived file date/time instead of file time -v increase verbosity (detail) of output
To list the files in a single directory, specify that directory's internal code on the command-line or type it when prompted.
To list the files in multiple directories, either:
-lib=<name>
option on the command-line (case-sensitive)-all
option to include all directories of all librariesTo include only files matching a particularly file naming pattern, specify that file pattern on the command-line (you may need to include the pattern in quotes).
To exclude files matching one or more file naming patterns, use the -ex=<name/pattern>
option one or more times to specify one or more filenames or patterns to exclude from the output list.
To include only files that were uploaded/imported within a specified number of days, use the -new=<days>
option.
By default, the files are ordered in their natural index-ordering (the order in which they were upload/imported - for each directory).
When the -sort
option is specified on the command-line, the SCFG-configured sort order will be applied to each listed directory's files.
╔═════════════════════════════════════╗ ║ Sort Value and Direction ║ ╠═════════════════════════════════════╣ ║ │Name Ascending (case-insensitive) ║ ║ │Name Descending (case-insensitive) ║ ║ │Date Ascending ║ ║ │Date Descending ║ ║ │Name Ascending (case-sensitive) ║ ║ │Name Descending (case-sensitive) ║ ╚═════════════════════════════════════╝
When the -hdr
option is not specified and the -sort
option is specified, then all files will be sorted as a single (globally sorted) list, even when more than one directory's files are included in that list. In this case, the default sort property is the file name
property, but that may be overridden by specifying the desired sort property name as an argument to -sort=<prop-name>
option. To sort strings without considering letter case, include the -i
option.
To reverse the output order of files, include the -reverse
option.
The 2 main classes of output are JSON or free-form text. To specify JSON formatted output, use the -json
command-line option. Many of the other command-line options do not serve a purpose when using JSON formatted output.
The default JSON output format is pretty-printed with 4-space indentation. To control the indentation level, use -json=<spaces>
where “<spaces>” is the number of spaces to use for indenting or 0 for none.
The default metadata included in the JSON formatted output is just the names of each file. To add more detail (file properties), specify one or more -v
options on the command-line to increase the verbosity:
-v
: an array of file objects including: name, size, time, crc16, crc32, md5, sha1,
and dir
properties.-vv
: an array of file objects adding: from, desc, cost, added, last_downloaded,
and times_downloaded
and if defined: anon and tags
.-vvv
: an array of file objects adding: extdesc
(extended description).-vvvv
: an array of file objects with all possible properties, even those that are blank/undefined.
The default non-JSON (free form) text output is controlled with the -v
(verbosity) option or the -ext
(extended description) option.
-v
: include file sizes (limited to 12 characters in length, not padded)-vv
: add the file summaries (short descriptions)-vvv
: add the extended file descriptions (same as the -ext
option)
To increase the maximum length of the file name displayed, use the -name=<length>
option.
By default, filenames shorter than the maximum are not padded (between the base file name and suffix/extension).
To pad (with spaces) short names and file extensions, use the -pad
option.
By default, extended descriptions are indented with a prefix that matches the FILES.BBS
standard (indented with spaces separated from the description with a pipe character). To customize the extended description line prefixes, use the -ext=<prefix>
option.
To choose your own file object properties to include in the list, specify the comma-separated list of property names with the -p=<list>
option.
To choose your own printf
-style format string, use the -fmt=<fmt>
command-line option.
The default date/time format will be either “MM/DD/YY” or “DD/MM/YY” depending on the SCFG->System->Toggle options->European Date Format setting. To choose your own date/time display format, specify a strftime format string with the -date=<fmt>
option.
The default file credit/size format is a rounded floating point format with a single digit of precision and a suffix of G, M, K or B. To choose an alternate file credit/size format, specify the format number (0-12) with the -size=<fmt>
option:
The formatting options for file sizes (bytes) or credit values:
01) | 1 | 22) | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
9805 | 10K | 9.6K | 9.58K | 10K | 9.6K | 9.58K | 0M | 0.0M | 0.01M | 0.009M | 9,805B | 10K |
3177 | 3K | 3.1K | 3.10K | 3K | 3.1K | 3.10K | 0M | 0.0M | 0.00M | 0.003M | 3,177B | 3K |
5120 | 5K | 5.0K | 5.00K | 5K | 5.0K | 5.00K | 0M | 0.0M | 0.00M | 0.005M | 5,120B | 5K |
15872 | 16K | 15.5K | 15.50K | 16K | 15.5K | 15.50K | 0M | 0.0M | 0.02M | 0.015M | 16K | 16K |
61114 | 60K | 59.7K | 59.68K | 60K | 59.7K | 59.68K | 0M | 0.1M | 0.06M | 0.058M | 60K | 60K |
349925 | 342K | 341.7K | 341.72K | 342K | 341.7K | 341.72K | 0M | 0.3M | 0.33M | 0.334M | 342K | 342K |
350 | 350B | 350B | 350B | 0K | 0.3K | 0.34K | 0M | 0.0M | 0.00M | 0.000M | 350B | 1K |
2134 | 2K | 2.1K | 2.08K | 2K | 2.1K | 2.08K | 0M | 0.0M | 0.00M | 0.002M | 2,134B | 2K |
8846 | 9K | 8.6K | 8.64K | 9K | 8.6K | 8.64K | 0M | 0.0M | 0.01M | 0.008M | 8,846B | 9K |
3599786 | 3M | 3.4M | 3.43M | 3M | 3.4M | 3.43M | 3M | 3.4M | 3.43M | 3.433M | 3,515K | 3,515K |
266531 | 260K | 260.3K | 260.28K | 260K | 260.3K | 260.28K | 0M | 0.3M | 0.25M | 0.254M | 260K | 260K |
1423559 | 1M | 1.4M | 1.36M | 1M | 1.4M | 1.36M | 1M | 1.4M | 1.36M | 1.358M | 1,390K | 1,390K |