Next: , Previous: , Up: Actions   [Contents][Index]


3.2 Print File Information

Action: -ls

True; list the current file in ‘ls -dils’ format on the standard output. The output looks like this:

204744   17 -rw-r--r--   1 djm      staff       17337 Nov  2  1992 ./lwall-quotes

The fields are:

  1. The inode number of the file. See Hard Links, for how to find files based on their inode number.
  2. the number of blocks in the file. The block counts are of 1K blocks, unless the environment variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used. See Size, for how to find files based on their size.
  3. The file’s type and file mode bits. The type is shown as a dash for a regular file; for other file types, a letter like for ‘-type’ is used (see Type). The file mode bits are read, write, and execute/search for the file’s owner, its group, and other users, respectively; a dash means the permission is not granted. See File Permissions, for more details about file permissions. See Mode Bits, for how to find files based on their file mode bits.
  4. The number of hard links to the file.
  5. The user who owns the file.
  6. The file’s group.
  7. The file’s size in bytes.
  8. The date the file was last modified.
  9. The file’s name. ‘-ls’ quotes non-printable characters in the file names using C-like backslash escapes. This may change soon, as the treatment of unprintable characters is harmonised for ‘-ls’, ‘-fls’, ‘-print’, ‘-fprint’, ‘-printf’ and ‘-fprintf’.
Action: -fls file

True; like ‘-ls’ but write to file like ‘-fprint’ (see Print File Name). The named output file is always created, even if no output is sent to it.

Action: -printf format

True; print format on the standard output, interpreting ‘\’ escapes and ‘%’ directives (more details in the following sections).

Field widths and precisions can be specified as with the printf C function. Format flags (like ‘#’ for example) may not work as you expect because many of the fields, even numeric ones, are printed with %s. Numeric flags which are affected in this way include ‘G’, ‘U’, ‘b’, ‘D’, ‘k’ and ‘n’. This difference in behaviour means though that the format flag ‘-’ will work; it forces left-alignment of the field. Unlike ‘-print’, ‘-printf’ does not add a newline at the end of the string. If you want a newline at the end of the string, add a ‘\n’.

As an example, an approximate equivalent of ‘-ls’ with null-terminated filenames can be achieved with this -printf format:

find -printf "%i %4k %M %3n %-8u %-8g %8s %T+ %p\n->%l\0" | cat

A practical reason for doing this would be to get literal filenames in the output, instead of ‘-ls’’s backslash-escaped names. (Using cat here prevents this happening for the ‘%p’ format specifier; see Unusual Characters in File Names). This format also outputs a uniform timestamp format.

As for symbolic links, the format above outputs the target of the symbolic link on a second line, following ‘\n->’. There is nothing following the arrow for file types other than symbolic links. Another approach, for complete consistency, would be to -fprintf the symbolic links into a separate file, so they too can be null-terminated.

Action: -fprintf file format

True; like ‘-printf’ but write to file like ‘-fprint’ (see Print File Name). The output file is always created, even if no output is ever sent to it.


Next: , Previous: , Up: Actions   [Contents][Index]