24.6.4 File Attributes

This section describes the functions for getting detailed
information about a file, including the owner and group numbers, the
number of names, the inode number, the size, and the times of access
and modification.

Function: file-newer-than-file-pfilename1 filename2

This function returns t if the file filename1 is
newer than file filename2. If filename1 does not
exist, it returns nil. If filename1 does exist, but
filename2 does not, it returns t.

In the following example, assume that the file aug-19 was written
on the 19th, aug-20 was written on the 20th, and the file
no-file doesn’t exist at all.

(file-newer-than-file-p "aug-19" "aug-20")
⇒ nil

(file-newer-than-file-p "aug-20" "aug-19")
⇒ t

(file-newer-than-file-p "aug-19" "no-file")
⇒ t

(file-newer-than-file-p "no-file" "aug-19")
⇒ nil

If the filename argument to the next two functions is a
symbolic link, then these function do not replace it with its
target. However, they both recursively follow symbolic links at all
levels of parent directories.

Function: file-attributesfilename &optional id-format

This function returns a list of attributes of file filename. If
the specified file cannot be opened, it returns nil.
The optional parameter id-format specifies the preferred format
of attributes UID and GID (see below)—the
valid values are 'string and 'integer. The latter is
the default, but we plan to change that, so you should specify a
non-nil value for id-format if you use the returned
UID or GID.

The elements of the list, in order, are:

t for a directory, a string for a symbolic link (the name
linked to), or nil for a text file.

The number of names the file has. Alternate names, also known as hard
links, can be created by using the add-name-to-file function
(see Changing Files).

The file’s UID, normally as a string. However, if it does
not correspond to a named user, the value is a number.

The file’s GID, likewise.

The time of last access, as a list of four integers (sec-highsec-lowmicrosecpicosec). (This is similar to the
value of current-time; see Time of Day.) Note that on
some FAT-based filesystems, only the date of last access is recorded,
so this time will always hold the midnight of the day of last access.

The time of last modification as a list of four integers (as above).
This is the last time when the file’s contents were modified.

The time of last status change as a list of four integers (as above).
This is the time of the last change to the file’s access mode bits,
its owner and group, and other information recorded in the filesystem
for the file, beyond the file’s contents.

The size of the file in bytes. This is floating point if the size is
too large to fit in a Lisp integer.

The file’s modes, as a string of ten letters or dashes,
as in ‘ls -l’.

An unspecified value, present for backward compatibility.

The file’s inode number. If possible, this is an integer. If the
inode number is too large to be represented as an integer in Emacs
Lisp but dividing it by 2^{16} yields a representable integer,
then the value has the
form (high . low), where low holds the low 16
bits. If the inode number is too wide for even that, the value is of the form
(highmiddle . low), where high holds
the high bits, middle the middle 24 bits, and low the low
16 bits.

The filesystem number of the device that the file is on. Depending on
the magnitude of the value, this can be either an integer or a cons
cell, in the same manner as the inode number. This element and the
file’s inode number together give enough information to distinguish
any two files on the system—no two files can have the same values
for both of these numbers.

has only one name (the name files.texi in the current default
directory).

"lh"

is owned by the user with name ‘lh’.

"users"

is in the group with name ‘users’.

(20614 64019 50040 152000)

was last accessed on October 23, 2012, at 20:12:03.050040152 UTC.

(20000 23 0 0)

was last modified on July 15, 2001, at 08:53:43 UTC.

(20614 64555 902289 872000)

last had its status changed on October 23, 2012, at 20:20:59.902289872 UTC.

122295

is 122295 bytes long. (It may not contain 122295 characters, though,
if some of the bytes belong to multibyte sequences, and also if the
end-of-line format is CR-LF.)

"-rw-rw-rw-"

has a mode of read and write access for the owner, group, and world.

t

is merely a placeholder; it carries no information.

(5888 2 . 43978)

has an inode number of 6473924464520138.

(15479 . 46724)

is on the file-system device whose number is 1014478468.

Function: file-nlinksfilename

This function returns the number of names (i.e., hard links) that
file filename has. If the file does not exist, this function
returns nil. Note that symbolic links have no effect on this
function, because they are not considered to be names of the files
they link to.