Emacs has several commands for copying, naming, and renaming files. All of them read two file names,
new, using the minibuffer, and then copy or adjust a file’s name accordingly; they do not accept wildcard file names.
In all these commands, if the argument
new is just a directory name (see Directory Names in the Emacs Lisp Reference Manual), the real new name is in that directory, with the same non-directory component as
old. For example, the command
M-x rename-file RET ~/foo RET /tmp/ RET renames
/tmp/foo. On GNU and other POSIX-like systems, directory names end in ‘
All these commands ask for confirmation when the new file name already exists.
M-x copy-file copies the contents of the file
old to the file
M-x copy-directory copies directories, similar to the
cp -r shell command. If
new is a directory name, it creates a copy of the
old directory and puts it in
new. Otherwise it copies all the contents of
old into a new directory named
M-x rename-file renames file
new. If the file name
new already exists, you must confirm with
yes or renaming is not done; this is because renaming causes the old meaning of the name
new to be lost. If
new are on different file systems, the file
old is copied and deleted.
M-x add-name-to-file adds an additional name to an existing file without removing the old name. The new name is created as a hard link to the existing file. The new name must belong on the same file system that the file is on. On MS-Windows, this command works only if the file resides in an NTFS file system. On MS-DOS, and some remote system types, it works by copying the file.
M-x make-symbolic-link creates a symbolic link named
new, which points at
target. The effect is that future attempts to open file
new will refer to whatever file is named
target at the time the opening is done, or will get an error if the name
target is nonexistent at that time. This command does not expand the argument
target, so that it allows you to specify a relative name as the target of the link. However, this command does expand leading ‘
target so that you can easily specify home directories, and strips leading ‘
/:’ so that you can specify relative names beginning with literal ‘
~’ or ‘
/:’. See Quoted File Names. On MS-Windows, this command works only on MS Windows Vista and later. When
new is remote, it works depending on the system type.