-printf format
True; print format on the standard output, interpreting `\' escapes and `%' directives. Field
widths and precisions can be specified as with the `printf' C function. Please note that many of
the fields are printed as %s rather than %d, and this may mean that flags don't work as you might
expect. This also means that the `-' flag does work (it forces fields to be left-aligned).
Unlike -print, -printf does not add a newline at the end of the string. The escapes and
directives are:
\a Alarm bell.
\b Backspace.
\c Stop printing from this format immediately and flush the output.
\f Form feed.
\n Newline.
\r Carriage return.
\t Horizontal tab.
\v Vertical tab.
\0 ASCII NUL.
\\ A literal backslash (`\').
\NNN The character whose ASCII code is NNN (octal).
A `\' character followed by any other character is treated as an ordinary character, so they both
are printed.
%% A literal percent sign.
%a File's last access time in the format returned by the C `ctime' function.
%Ak File's last access time in the format specified by k, which is either `@' or a directive
for the C `strftime' function. The possible values for k are listed below; some of them
might not be available on all systems, due to differences in `strftime' between systems.
@ seconds since Jan. 1, 1970, 00:00 GMT, with fractional part.
Time fields:
H hour (00..23)
I hour (01..12)
k hour ( 0..23)
l hour ( 1..12)
M minute (00..59)
p locale's AM or PM
r time, 12-hour (hh:mm:ss [AP]M)
S Second (00.00 .. 61.00). There is a fractional part.
T time, 24-hour (hh:mm:ss)
+ Date and time, separated by `+', for example `2004-04-28+22:22:05.0'. This is a GNU
extension. The time is given in the current timezone (which may be affected by
setting the TZ environment variable). The seconds field includes a fractional part.
X locale's time representation (H:M:S)
Z time zone (e.g., EDT), or nothing if no time zone is determinable
Date fields:
a locale's abbreviated weekday name (Sun..Sat)
A locale's full weekday name, variable length (Sunday..Saturday)
b locale's abbreviated month name (Jan..Dec)
B locale's full month name, variable length (January..December)
c locale's date and time (Sat Nov 04 12:02:33 EST 1989). The format is the same as
for ctime(3) and so to preserve compatibility with that format, there is no
fractional part in the seconds field.
d day of month (01..31)
D date (mm/dd/yy)
h same as b
j day of year (001..366)
m month (01..12)
U week number of year with Sunday as first day of week (00..53)
w day of week (0..6)
W week number of year with Monday as first day of week (00..53)
x locale's date representation (mm/dd/yy)
y last two digits of year (00..99)
Y year (1970...)
%b The amount of disk space used for this file in 512-byte blocks. Since disk space is
allocated in multiples of the filesystem block size this is usually greater than %s/512,
but it can also be smaller if the file is a sparse file.
%c File's last status change time in the format returned by the C `ctime' function.
%Ck File's last status change time in the format specified by k, which is the same as for %A.
%d File's depth in the directory tree; 0 means the file is a command line argument.
%D The device number on which the file exists (the st_dev field of struct stat), in decimal.
%f File's name with any leading directories removed (only the last element).
%F Type of the filesystem the file is on; this value can be used for -fstype.
%g File's group name, or numeric group ID if the group has no name.
%G File's numeric group ID.
%h Leading directories of file's name (all but the last element). If the file name contains
no slashes (since it is in the current directory) the %h specifier expands to ".".
%H Command line argument under which file was found.
%i File's inode number (in decimal).
%k The amount of disk space used for this file in 1K blocks. Since disk space is allocated in
multiples of the filesystem block size this is usually greater than %s/1024, but it can
also be smaller if the file is a sparse file.
%l Object of symbolic link (empty string if file is not a symbolic link).
%m File's permission bits (in octal). This option uses the `traditional' numbers which most
Unix implementations use, but if your particular implementation uses an unusual ordering of
octal permissions bits, you will see a difference between the actual value of the file's
mode and the output of %m. Normally you will want to have a leading zero on this number,
and to do this, you should use the # flag (as in, for example, `%#m').
%M File's permissions (in symbolic form, as for ls). This directive is supported in findutils
4.2.5 and later.
%n Number of hard links to file.
%p File's name.
%P File's name with the name of the command line argument under which it was found removed.
%s File's size in bytes.
%S File's sparseness. This is calculated as (BLOCKSIZE*st_blocks / st_size). The exact value
you will get for an ordinary file of a certain length is system-dependent. However,
normally sparse files will have values less than 1.0, and files which use indirect blocks
may have a value which is greater than 1.0. The value used for BLOCKSIZE is system-
dependent, but is usually 512 bytes. If the file size is zero, the value printed is
undefined. On systems which lack support for st_blocks, a file's sparseness is assumed to
be 1.0.
%t File's last modification time in the format returned by the C `ctime' function.
%Tk File's last modification time in the format specified by k, which is the same as for %A.
%u File's user name, or numeric user ID if the user has no name.
%U File's numeric user ID.
%y File's type (like in ls -l), U=unknown type (shouldn't happen)
%Y File's type (like %y), plus follow symlinks: L=loop, N=nonexistent
A `%' character followed by any other character is discarded, but the other character is printed
(don't rely on this, as further format characters may be introduced). A `%' at the end of the
format argument causes undefined behaviour since there is no following character. In some
locales, it may hide your door keys, while in others it may remove the final page from the novel
you are reading.
The %m and %d directives support the # , 0 and + flags, but the other directives do not, even if
they print numbers. Numeric directives that do not support these flags include G, U, b, D, k and
n. The `-' format flag is supported and changes the alignment of a field from right-justified
(which is the default) to left-justified.
See the UNUSUAL FILENAMES section for information about how unusual characters in filenames are
handled.
|
Pipelines
A pipeline is a sequence of one or more commands separated by one of the control operators | or |&. The
format for a pipeline is:
[time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]
The standard output of command is connected via a pipe to the standard input of command2. This
connection is performed before any redirections specified by the command (see REDIRECTION below). If |&
is used, the standard error of command is connected to command2's standard input through the pipe; it is
shorthand for 2>&1 |. This implicit redirection of the standard error is performed after any
redirections specified by the command.
The return status of a pipeline is the exit status of the last command, unless the pipefail option is
enabled. If pipefail is enabled, the pipeline's return status is the value of the last (rightmost)
command to exit with a non-zero status, or zero if all commands exit successfully. If the reserved word
! precedes a pipeline, the exit status of that pipeline is the logical negation of the exit status as
described above. The shell waits for all commands in the pipeline to terminate before returning a value.
If the time reserved word precedes a pipeline, the elapsed as well as user and system time consumed by
its execution are reported when the pipeline terminates. The -p option changes the output format to that
specified by POSIX. When the shell is in posix mode, it does not recognize time as a reserved word if
the next token begins with a `-'. The TIMEFORMAT variable may be set to a format string that specifies
how the timing information should be displayed; see the description of TIMEFORMAT under Shell Variables
below.
When the shell is in posix mode, time may be followed by a newline. In this case, the shell displays the
total user and system time consumed by the shell and its children. The TIMEFORMAT variable may be used
to specify the format of the time information.
Each command in a pipeline is executed as a separate process (i.e., in a subshell).
|