find: Print File Information
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. ⇒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. ⇒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 (⇒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. ⇒File Permissions, for more
details about file permissions. ⇒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' (⇒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;
⇒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' (⇒Print
File Name). The output file is always created, even if no output
is ever sent to it.
Menu