Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SLS(1)			    General Commands Manual			SLS(1)

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 (col-
	  umn) 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	incon-
	  sistent 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 con-
	      tents).

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

       -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 specifica-
       tions, 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-ad-
	      justment 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 char-
	      acters 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	 char-
	      acters  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:

	      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	trail-
		   ing 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 de-
		   fault).
	      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;
       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	embed-
       ded quotes.)

       The date	format string may contain plain	characters, which  are	copied
       to the output, or any of	the following format modifier characters (pre-
       ceded 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.

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 argu-
       ment; 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  in-
       formation on overriding this default).

				 7 March 1989				SLS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sls&sektion=1&manpath=FreeBSD+Ports+15.0.quarterly>

home | help