STAT
Section: User Commands (1)
Index
Return to Main Contents
NAME
stat - print file status information
SYNOPSIS
stat
[
-g
]
[
-l
]
[
-e
]
[
-f format
]
[
-t time_format
]
[
-m time_format
]
[
-a time_format
]
[
-c time_format
]
[
-q mode_names
]
[
-y type_names
]
file ...
DESCRIPTION
Stat
prints status information for each of the files specified. If a
file name is `-', then status information about the standard input
is displayed.
The output can be specified by means of
printf
like format specifications. If no format specifications are given, then
``ls -l''
like output is produced.
OPTIONS
- -g
-
List time fields in UTC (GMT) instead of local time.
- -l
-
For symbolic links list the status of the the file it points to instead of
the status of the link (i.e. follow symbolic links).
- -e
-
Exit immediately with an error when stat can not be performed on a file. If
this
flag is not given then error messages are printed, but the program continues
to go through the list of files.
- -f output format
-
Specify the output format.
- -a time format
-
Specify the output format for the file access time field.
- -m time format
-
Specify the output format for the file modification time field.
- -c time format
-
Specify the output format for the file status change time field.
- -t time format
-
Specify the output format for the current time field.
- -q mode names
-
Specify the English description of the file mode giving a list of 24 strings.
The strings are separated by an arbitrary character and the list should start
and end with that character.
The first three strings
describe the set user id, set group id and sticky modes.
After that, nine strings, the descriptions for read
permission, write permission and execute permission, first for the owner,
then for the group and then for others must be given.
Another set
of 12 strings must follow describing the semantics of the above in
the case of directories.
- -y type names
-
Specify the English description of the file type giving a list of seven strings.
The list is given as in the
-q
option and the strings are the descriptions to be used for directories,
block special files, character special files, symbolic links, named pipes,
sockets and regular files. All types must be given, even if not supported
on a system.
Five format specifications can be given: one for
the whole output and four for the output format of different time values.
The format specification
is a string. All characters in the format specification are printed except
for characters following a `%' sign. If the first character after a `%' sign
is an open bracket `(' then the characters up to the matching closing bracket
are taken as a
printf
format specification that will be used to print the item specified.
A `%' sign in the printf format specification is not needed.
Note that some systems may not support some of the options.
Characters following a `%' sign are
converted in the global output specification as follows:
-
- v
-
device the file resides on in decimal
- i
-
the file's inode number in decimal
- p
-
the file's protection in octal
- P
-
the file's protection in an
ls -l
like fashion
- q
-
the file's protection as a series of nine 0 or 1 digits. The default format
specification for printf is `%s' and applies to each individual digit
- Q
-
the file's protection using an English description. The description can be
optionaly specified using the
.q
option. If the file is a symbolic link and the
-l
option has not been given, nothing is printed
- l
-
the number of links the file has in decimal
- u
-
the user id of the owner of the file in decimal
- U
-
the user id of the owner of the file as a string
- g
-
the group id of the owner of the file in decimal
- G
-
the group id of the owner of the file as a string
- r
-
the device identifier (only for special files)
- s
-
total byte size of the file in decimal
- a
-
last access time of file in seconds since 1970
- m
-
last modification time of file in seconds since 1970
- c
-
last status change time of file in seconds since 1970
- t
-
current time in seconds since 1970
- A
-
last access time of file as the string specified by the access time format
- M
-
last modification time of file as the string specified by the modification time
format
- C
-
last status change time of file as the string specified by the change
time format
- T
-
current time as the string specified by the current time format
- z
-
preferred blocksize for file I/O
- b
-
actual number of blocks allocated
- n
-
the name of the file
- f
-
a `/' for directories, `@' for symbolic links, `=' for AF_UNIX domain sockets
and `*' for executable files. If the name of a symbolic link or an arrow is
printed as a result of %L or %- then the `@' is not printed.
- F
-
The type of the file is printed as one of the symbols S_IFIDR, S_IFBLK,
S_IFCHAR, S_IFLNK, S_IFIFO, S_IFSOCK, S_IFREG for directories, block
special files, character special files, symbolic links, FIFO special files,
AF_UNIX domain sockets and regular files.
- Y
-
The type of the file using an English description, optionaly specified using
the
-y
option
- L
-
if the file is a symbolic link, the contents of the link
- -
-
if the file is a symbolic link, the character sequence ` -> '
The default time format specification produces
`ls -l'
like time output.
Characters following a `%' sign are
converted in the time output specification as follows:
-
- m
-
the month number in decimal (1-12)
- d
-
the day of month number in decimal (1-31)
- y
-
the year in decimal (1900-...)
- Y
-
the year in decimal printed only if the time is more that half a year older
than the current time.
- H
-
the hour of the day in decimal (0-23)
- M
-
minutes in decimal (0-59)
- S
-
seconds in decimal (0-59)
- T
-
hours and minutes as 00:00 printed only if time is less than half a
year older than the current time. (A note for pedants: If the time
is exactly equal to the current time minus half a year than hours and
minutes are printed.)
- j
-
the day of the year in decimal (0-365)
- w
-
the day of the week in decimal (Sunday is 0)
- a
-
the three letter abbreviation of the day of the week
- h
-
the three letter abbreviation of the month
- z
-
the offset of the time from UTC (GMT) in seconds
- Z
-
abbreviation of the timezone name
- D
-
the letters DST if daylight savings time is in effect
- t
-
The time in the form mmddhhmmyy. This form can be used as an argument
of the System V touch command.
EXAMPLES
List all files in a directory in a
`ls -F'
like fashion (the default time format is `%h %(2d)d %T%(5d)Y'):
stat -f '%P%(3d)l %(-8s)U %(8ld)s %M %n%-%L%F' *
Make depend in a makefile without modifying the permissions of Makefile
(Makefile can be read only from a version control system).
PERMS=`stat -f %p Makefile` ;\
chmod 600 Makefile ;\
mkdep $(FILES) ;\
chmod $$PERMS Makefile
An extremely verbose version of ls:
#!/bin/sh
T='%a %d %h %y %H:%M:%S'
stat -a "$T" -c "$T" -m "$T" -f '
File: %n
Type: %Y
Device: %v(0x%(x)v)
Inode: %i(0x%(x)i)
Potection: %Q
User: %U(%u)
Group: %G(%g)
File size: %s byte(s) %b block(s)
Last access: %A
Last change: %M
Status change: %C
' -y '
Directory
Block device
Character device
Symbolic link
Named pipe
Socket
Normal file
' $*
AUTHOR
(C) Copyright 1989 Diomidis D. Spinellis (dds@cc.ic.ac.uk). All rights reserved.
SEE ALSO
ls(1), find(1), printf(3S)
BUGS
Not quite as many options as ls.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- OPTIONS
-
- EXAMPLES
-
- AUTHOR
-
- SEE ALSO
-
- BUGS
-
This document was created by
man2html,
using the manual pages.
Time: 21:53:12 GMT, February 02, 2023