Next: Magic File Names, Previous: Contents of Directories, Up: Files [Contents][Index]

### 24.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 copy-contents

  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 argument keep-time non-`nil` means to preserve the modification time of the copied files. A prefix arg makes keep-time non-`nil`.

  The fourth argument parents says whether to create parent directories if they don’t exist. Interactively, this happens by default.

  The fifth argument copy-contents, if non-`nil`, means to copy the contents of dirname directly into newname if the latter is an existing directory, instead of copying dirname into it as a subdirectory.

Command: delete-directory dirname &optional recursive trash

  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.

  If the optional argument trash is non-`nil` and the variable `delete-by-moving-to-trash` is non-`nil`, this command moves the file into the system Trash instead of deleting it. See Miscellaneous File Operations in The GNU Emacs Manual. When called interactively, trash is `t` if no prefix argument is given, and `nil` otherwise.

Next: Magic File Names, Previous: Contents of Directories, Up: Files [Contents][Index]