packages icon



 SLS(1)                                                               SLS(1)
                                7 March 1989



 NAME
      sls - list information about file(s) and directories

 SYNOPSIS
      sls [ -adlpsuLR ] filename ...

 DESCRIPTION
      Sls is a program designed to overcome the limitations of the standard
      UNIX ls(1) program, providing a more consistent interface to file
      inode information.  It is particularly designed for use by shell
      scripts to make obtaining information about files easier.  It uses
      printf(3)-style format strings to control the sorting and output of
      file information.  Advantages of sls over ls:

      +  Allows complete specification of the output contents - field
         (column) order, field widths, right/left justification, and zero-
         fill.

      +  Allows complete specification of the sort order independently of
         the output options - output can be sorted on one or more fields.

      +  Has consistent, user-definable file date formats - ls's are
         inconsistent and hard to parse (the seconds are never displayed,
         the year is shown instead of the time for files more than 6 months
         old, etc.).

      +  Has ``normalized'' output (no summary lines or changing formats).

      +  Allows specification of delimiter char(s) - the characters between
         fields - which makes the output easier to parse in shell scripts.

      +  Won't stat files if it's not necessary (e.g., ``sls <dir>''); in
         the trivial (but common) case of calling sls on a directory (or
         list of directories) with no options, it will simply read the
         directory file and display the file names, sorted alphabetically.
         For very large directories, this is much faster than ls, and gets
         around command line limitations of the various login shells when
         using echo(1).

 OPTIONS
      -a   List all entries; in the absence of this option, entries whose
           names begin with a `.' are not listed.

      -d   If argument is a directory, list only its name (not its
           contents).

      -p outputstr
           Set the list of output fields according to the printf-style
           outputstr (see "SORT AND OUTPUT OPTIONS", below).





                                    - 1 -         Formatted:  April 24, 2024






 SLS(1)                                                               SLS(1)
                                7 March 1989



      -l   Perform long-form output according to default format ( ls-style)
           or environment variable SLS_LONGFMT, if set.  This effectively
           sets the -p option string to a predefined value, providing a
           convenient shorthand for a detailed listing.

      -s sortstr
           Sets the sort order according to the printf-style sortstr (see
           "SORT AND OUTPUT OPTIONS", below).

      -u   Sets the default display format for file dates to be the same as
           ls (``Mmm dd HH:MM'' for newer files, ``Mmm dd yyyy'' for older
           files).

      -L   If argument is a symbolic link, list the file or directory the
           link references rather than the link itself.

      -R   Recursively list subdirectories encountered.

 SORT AND OUTPUT OPTIONS
      The option strings supplied with the -s and -p options determine the
      sort order and output format of the listing.  The option string is a
      single argument consisting of two types of objects: plain characters,
      which are simply copied to the output stream, and conversion
      specifications, each of which causes a particular member (or field) of
      the stat(2) structure to be sorted or printed.  (The correspondence is
      not quite one-to-one, but it's close.)  Plain characters and field
      widths in the sort option string are ignored.  Each conversion
      specification is introduced by the character % (unless two appear
      together, in which case a single one is output).  After the %, any of
      the following may appear in sequence:

           An optional `-' flag: for the -p option, it specifies left-
           adjustment for string-type fields (no effect on numeric fields);
           for the -s option, it means reverse the sort order on this field.

           An optional decimal digit string specifying a minimum field width
           (-p option only).  If the converted value has fewer characters
           than the field width, it will be padded on the left (or right, if
           the left-adjustment flag has been given) to the field width.  If
           the converted value has more characters than the field width, the
           field width will be ignored.  If the digit string has a leading
           ``0'', numeric-type fields will be zero-filled on the left to the
           width of the field.

           A (required) flag character, which results in the conversion of a
           field from the stat structure for each file.  Some flag
           characters may be followed by optional modifier character(s).
           Each flag character has a default field width and format.  The
           flag characters and their meanings are:





                                    - 2 -         Formatted:  April 24, 2024






 SLS(1)                                                               SLS(1)
                                7 March 1989



           a    last access date.  This can be followed by a quoted date
                format string (see "DATE FORMAT STRINGS", below).  If no
                date format string is supplied, the default format shows the
                time and year; this can be overridden by setting the
                SLS_DATEFMT environment variable to a suitable date format
                string.
           b    number of allocated (512-byte) blocks; optionally followed
                by one of mkc to specify output in megabytes, kilobytes, or
                characters (the default).
           c    inode change date.  This can be followed by a quoted date
                format string (see "DATE FORMAT STRINGS", below).  If no
                date format string is supplied, the default format shows the
                time and year; this can be overridden by setting the
                SLS_DATEFMT environment variable to a suitable date format
                string.
           d    device number the inode resides on.
           g    ascii group name of the owner of the file.
           G    numeric group number of the owner of the file.
           i    inode number of the file.
           k    optimal file system block size.
           l    number of hard links.
           m    last modify date.  This can be followed by a quoted date
                format string (see "DATE FORMAT STRINGS", below).  If no
                date format string is supplied, the default format shows the
                time and year; this can be overridden by setting the
                SLS_DATEFMT environment variable to a suitable date format
                string.
           n    file name; optionally followed by one or more of abs: a to
                specify ascii output of non-printing chars; b to specify
                basename only (i.e., file name w/o leading directory path,
                if any); and s to specify a filetype suffix - this marks
                directories with a trailing slash (/), executable files with
                a trailing asterisk (*), symbolic links with a trailing at-
                sign (@), and AF_UNIX domain sockets with a trailing equals
                sign (=).
           N    file name, with symbolic links' linked-to file name shown as
                ``-> name''.
           p    ascii permissions (same as in ls).
           P    octal permissions.
           r    device number that the file resides on.
           s    file size; optionally followed by one of mkc to specify
                output in megabytes, kilobytes, or characters (the default).
           t    file type (same as in ls).
           u    ascii user name of the owner of the file.
           U    numeric user id of the owner of the file.

 DATE FORMAT STRINGS
      The a, c, and m flag characters use a default format of Mmm dd yyyy
      HH:MM (``%h %d 19%y %H:%M'').  This can be changed by setting the
      SLS_DATEFMT environment variable to a suitable date format string; by
      specifying the -u command line option, which requests ls-style dates;



                                    - 3 -         Formatted:  April 24, 2024






 SLS(1)                                                               SLS(1)
                                7 March 1989



      or by following the flag character with a quoted format string of the
      type used by date(1) (with several extensions; see below).  (Note that
      either single or double quotes must delimit the date format string in
      the -p option string, so use your shell's particular syntax for
      embedded quotes.) The date format string may contain plain characters,
      which are copied to the output, or any of the following format
      modifier characters (preceded by a `%'):
           %    print a percent sign.
           a    print abbreviated weekday (Sun to Sat).
           d    print day of month (01 to 31).
           h    print abbreviated month (Jan to Dec).
           j    print julian date (001 to 366).
           m    print month of year (01 to 12).
           n    print a newline.
           r    print time in AM/PM notation (``HH:MM:SS ?M'').
           t    print a tab.
           w    print day of week (0 to 6) (0=Sunday).
           x    print date in system format (number of seconds since the
                epoch).
           y    print last 2 digits of year (00 to 99).
           D    print date as mm/dd/yy.
           E    print day of month with no padding for single-digit dates.
           F    print full month (January to December).
           H    print hour (00 to 23).
           M    print minute (00 to 59).
           S    print second (00 to 59).
           T    print time as HH:MM:SS.
           W    print full weekday (Sunday to Saturday).
           X    print date in system format, using the number of days only
                (divides seconds by 86,400).

 EXAMPLES
      To produce the same output as ``ls -l'':

      sls -u -p '%t%p %2l %-u %s %m %N' To list the size (in kbytes), access
      and modify dates (no times), and file names (no pathname), sorted by
      size (largest first):

      sls -s %-s -p '%sk  %a"%h %d 19%y"  %m"%h %d 19%y"  %nb' /usr/mydir
      How a shell script might get the last-modify date on a file with sls
      vs.  ls (assume that SLS_DATEFMT="%h %d %H:%M"; remember that you have
      no control over the time vs. year field with ls):

      FILEDATE=`ls -l file | awk '{print $5,$6,$7}'`
      FILEDATE=`sls -p %m file`

 FILES
      /etc/passwd    to get user names for %u output format flag.
      /etc/group     to get group names for %g output format flag.





                                    - 4 -         Formatted:  April 24, 2024






 SLS(1)                                                               SLS(1)
                                7 March 1989



 BUGS
      It is impossible to distinguish between two files with the same name
      in two different directories with the %nb output format flag.  There
      are several features of the ``standardized output'' nature of sls that
      are incompatible with ls, and may cause some initial confusion; these
      are mentioned below.  The default alignment for string-valued fields
      (right-justified) does not match ls, but is consistent with the C
      library function printf (which uses the ``-'' option flag to specify
      left-justification).  sls does not automatically eliminate the
      directory part of the file name in the listing when supplied with a
      single directory name argument; the user must explicitly request that
      with the %nb output format flag.  The symbolic link notation
      ``linkname -> name'' that ls automatically provides with -l output
      must also be explicitly requested by the user with the %N output
      format flag.  Sls has no multi-column output capability.  The default
      format for dates in sls displays both the time and year, resulting in
      wider output (see ``DATE FORMAT STRINGS'' section for information on
      overriding this default).




































                                    - 5 -         Formatted:  April 24, 2024