23.10 Miscellaneous File Operations
Emacs has commands for performing many other operations on files.
All operate on one file; they do not accept wildcard file names.
M-x view-file allows you to scan or read a file by sequential
screenfuls. It reads a file name argument using the minibuffer. After
reading the file into an Emacs buffer,
view-file displays the
beginning. You can then type <SPC> to scroll forward one windowful,
or <DEL> to scroll backward. Various other commands are provided
for moving around in the file, but none for changing it; type ?
while viewing for a list of them. They are mostly the same as normal
Emacs cursor motion commands. To exit from viewing, type q.
The commands for viewing are defined by a special minor mode called View
A related command, M-x view-buffer, views a buffer already present
in Emacs. See Misc Buffer.
M-x insert-file (also C-x i) inserts a copy of the
contents of the specified file into the current buffer at point,
leaving point unchanged before the contents and the mark after them.
M-x write-region is the inverse of M-x insert-file; it
copies the contents of the region into the specified file. M-x
append-to-file adds the text of the region to the end of the
specified file. See Accumulating Text. The variable
write-region-inhibit-fsync applies to these commands, as well
as saving files; see Customize Save.
M-x delete-file deletes the specified file, like the
command in the shell. If you are deleting many files in one directory, it
may be more convenient to use Dired (see Dired).
M-x rename-file reads two file names old and new using
the minibuffer, then renames file old as 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 old and new are on different file systems, the
file old is copied and deleted.
If the argument new is just a directory name, the real new
name is in that directory, with the same non-directory component as
old. For example, M-x rename-file RET ~/foo RET /tmp RET
renames ~/foo to /tmp/foo. The same rule applies to all
the remaining commands in this section. All of them ask for
confirmation when the new file name already exists, too.
The similar command M-x add-name-to-file is used to add an
additional name to an existing file without removing its 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, it works by copying the file.
M-x copy-file reads the file old and writes a new file
named new with the same contents.
M-x make-symbolic-link reads two file names target and
linkname, then creates a symbolic link named linkname,
which points at target. The effect is that future attempts to
open file linkname 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.
Not all systems support symbolic links; on systems that don't
support them, this command is not defined.