Emacs Lisp: File and Directory Functions

By Xah Lee. Date: . Last updated: .

Here's the most useful functions for file and directory.

Functions on File

Basic functions on file and directory.

file-exists-p
rename-file
(rename-file "~/test1.txt" "~/test2.txt")
copy-file
(copy-file "~/test1.txt" "~/test2.txt")
delete-file
(delete-file "~/test2.txt")
set-file-modes

File Size, Date, Owner, etc

file-attributes
(file-attributes FILENAME &optional ID-FORMAT)

Return a list of attributes of file FILENAME. e.g.

  • file-attribute-type
  • file-attribute-link-number
  • file-attribute-user-id
  • file-attribute-group-id
  • file-attribute-access-time
  • file-attribute-modification-time
  • file-attribute-status-change-time
  • file-attribute-size
  • file-attribute-modes
  • file-attribute-inode-number
  • file-attribute-device-number

see emacs lisp manual

;; get file size in bytes
(let ((xfileAttr
       (file-attributes "~/.emacs.d/init.el")))
  (file-attribute-size xfileAttr))
;; sample value
;; 162

Functions on Directory

directory-files
List files. [see Emacs Lisp: Walk Directory, List Files]
make-directory
Create a directory.
delete-directory
delete a whole dir. new in emacs 23.
(delete-directory "~/stuff" t)
copy-directory
(copy-directory "~/stuff" "~/stuff-backup")

Reference

Emacs Lisp File/Buffer