PREV UP NEXT GNU Emacs Lisp Reference Manual

22.6.2: Distinguishing Kinds of Files

This section describes how to distinguish various kinds of files, such as directories, symbolic links, and ordinary files.

Function: file-symlink-p filename
If the file filename is a symbolic link, the file-symlink-p function returns the file name to which it is linked. This may be the name of a text file, a directory, or even another symbolic link, or it may be a nonexistent file name.

If the file filename is not a symbolic link (or there is no such file), file-symlink-p returns nil.

(file-symlink-p "foo")
     => nil
(file-symlink-p "sym-link")
     => "foo"
(file-symlink-p "sym-link2")
     => "sym-link"
(file-symlink-p "/bin")
     => "/pub/bin"
Function: file-directory-p filename
This function returns t if filename is the name of an existing directory, nil otherwise.
(file-directory-p "~rms")
     => t
(file-directory-p "~rms/lewis/files.texi")
     => nil
(file-directory-p "~rms/lewis/no-such-file")
     => nil
(file-directory-p "$HOME")
     => nil
(file-directory-p
 (substitute-in-file-name "$HOME"))
     => t
Function: file-regular-p filename
This function returns t if the file filename exists and is a regular file (not a directory, symbolic link, named pipe, terminal, or other I/O device).