ErgoEmacsEmacsLispBlogEmacsLispBuy Tutorial

25.10 Creating, Copying and Deleting Directories

Most Emacs Lisp file-manipulation functions get errors when used on files that are directories. For example, you cannot delete a directory with delete-file. These special functions exist to create and delete directories.

— Command: make-directory dirname &optional parents

This command creates a directory named dirname. If parents is non-nil, as is always the case in an interactive call, that means to create the parent directories first, if they don't already exist.

mkdir is an alias for this.

— Command: copy-directory dirname newname &optional keep-time parents

This command copies the directory named dirname to newname. If newname names an existing directory, dirname will be copied to a subdirectory there.

It always sets the file modes of the copied files to match the corresponding original file.

The third arg keep-time non-nil means to preserve the modification time of the copied files. A prefix arg makes keep-time non-nil.

Noninteractively, the last argument parents says whether to create parent directories if they don't exist. Interactively, this happens by default.

— Command: delete-directory dirname &optional recursive

This command deletes the directory named dirname. The function delete-file does not work for files that are directories; you must use delete-directory for them. If recursive is nil, and the directory contains any files, delete-directory signals an error.

delete-directory only follows symbolic links at the level of parent directories.

blog comments powered by Disqus