Emacs/emacs/Operating-on-Files
Next: Shell Commands in Dired, Previous: Marks vs Flags, Up: Dired [Contents][Index]
30.7 Operating on Files
This section describes the basic Dired commands to operate on one file or several files. All of these commands are capital letters; all of them use the minibuffer, either to read an argument or to ask for confirmation, before they act. All of them let you specify the files to manipulate in these ways:
- If you give the command a numeric prefix argument
n
, it operates on the nextn
files, starting with the current file. (Ifn
is negative, the command operates on the -n
files preceding the current line.) - Otherwise, if some files are marked with ‘
*
’, the command operates on all those files. - Otherwise, the command operates on the current file only.
Certain other Dired commands, such as ! and the ‘%
’
commands, use the same conventions to decide which files to work on.
Commands which ask for a destination directory, such as those which
copy and rename files or create links for them, try to guess the default
target directory for the operation. Normally, they suggest the Dired
buffer’s default directory, but if the option dired-dwim-target
is non-nil
, and if there is another Dired buffer displayed in
some window, that other buffer’s directory is suggested instead.
You can customize dired-dwim-target
to prefer either the next
window with a Dired buffer, or the most recently used window with
a Dired buffer, or to use any other function. When the value is
a function, it will be called with no arguments and is expected to
return a list of directories which will be used as defaults
(i.e. default target and “future history”).
Here are the file-manipulating Dired commands that operate on files.
C new
RET
Copy the specified files (dired-do-copy
). The argument new
is the directory to copy into, or (if copying a single file) the new
name. This is like the shell command cp
.
The option dired-create-destination-dirs
controls whether Dired
should create non-existent directories in the destination while
copying/renaming files. The default value nil
means Dired
never creates such missing directories; the value always
,
means Dired automatically creates them; the value ask
means Dired asks you for confirmation before creating them.
If dired-copy-preserve-time
is non-nil
, then copying
with this command preserves the modification time of the old file in
the copy, like ‘cp -p
’.
The variable dired-recursive-copies
controls whether to copy
directories recursively (like ‘cp -r
’). The default is
top
, which means to ask before recursively copying a directory.
D
Delete the specified files (dired-do-delete
). This is like the
shell command rm
.
Like the other commands in this section, this command operates on the
marked files, or the next n
files. By contrast, x
(dired-do-flagged-delete
) deletes all flagged files.
R new
RET
Rename the specified files (dired-do-rename
). If you rename a
single file, the argument new
is the new name of the file. If
you rename several files, the argument new
is the directory into
which to move the files (this is like the shell command mv
).
The option dired-create-destination-dirs
controls whether Dired
should create non-existent directories in new
.
Dired automatically changes the visited file name of buffers associated with renamed files so that they refer to the new names.
If the value of the variable dired-vc-rename-file
is non-nil
,
files are renamed using the commands of the underlying VCS, via
vc-rename-file
(see VC Delete/Rename).
H new
RET
Make hard links to the specified files (dired-do-hardlink
).
This is like the shell command ln
. The argument new
is
the directory to make the links in, or (if making just one link) the
name to give the link.
S new
RET
Make symbolic links to the specified files (dired-do-symlink
).
This is like ‘ln -s
’. The argument new
is the directory to
make the links in, or (if making just one link) the name to give the
link.
M modespec
RET
Change the mode (also called permission bits) of the specified
files (dired-do-chmod
). modespec
can be in octal or
symbolic notation, like arguments handled by the chmod
program.
G newgroup
RET
Change the group of the specified files to newgroup
(dired-do-chgrp
).
O newowner
RET
Change the owner of the specified files to newowner
(dired-do-chown
). (On most systems, only the superuser can do
this.)
The variable dired-chown-program
specifies the name of the
program to use to do the work. (This variable is necessary because
different systems put chown
in different places).
T timestamp
RET
Touch the specified files (dired-do-touch
). This means
updating their modification times to the present time. This is like
the shell command touch
.
P command
RET
Print the specified files (dired-do-print
). You must specify the
command to print them with, but the minibuffer starts out with a
suitable guess made using the variables lpr-command
and
lpr-switches
(the same variables that lpr-buffer
uses;
see Printing).
Z
Compress the specified files (dired-do-compress
). If the file
appears to be a compressed file already, uncompress it instead. Each
marked file is compressed into its own archive; this uses the
gzip
program if it is available, otherwise it uses
compress
. On a directory name, this command produces a
compressed .tar.gz
archive containing all of the directory’s
files, by running the tar
command with output piped to
gzip
. To allow decompression of compressed directories,
typing Z on a .tar.gz
or .tgz
archive file unpacks
all the files in the archive into a directory whose name is the
archive name with the extension removed.
c
Compress the specified files (dired-do-compress-to
) into a
single archive anywhere on the file system. The compression algorithm
is determined by the extension of the archive, see
dired-compress-files-alist
.
:d
Decrypt the specified files (epa-dired-do-decrypt
).
See Dired integration in EasyPG Assistant User’s Manual.
:v
Verify digital signatures on the specified files (epa-dired-do-verify
).
See Dired integration in EasyPG Assistant User’s Manual.
:s
Digitally sign the specified files (epa-dired-do-sign
).
See Dired integration in EasyPG Assistant User’s Manual.
:e
Encrypt the specified files (epa-dired-do-encrypt
).
See Dired integration in EasyPG Assistant User’s Manual.
L
Load the specified Emacs Lisp files (dired-do-load
).
See Lisp Libraries.
B
Byte compile the specified Emacs Lisp files
(dired-do-byte-compile
). See [http://www.gnu.org/software/emacs/manual/html_node/elisp/Byte-Compilation.html#Byte-Compilation Byte
Compilation] in The Emacs Lisp Reference Manual.
A regexp
RET
Search all the specified files for the regular expression regexp
(dired-do-find-regexp
).
This command is a variant of xref-find-references
(see Identifier Search), it displays the *xref*
buffer,
where you can navigate between matches and display them as needed
using the commands described in Xref Commands.
If any of the marked files are directories, then this command searches
all of the files in those directories, and any of their
subdirectories, recursively, except files whose names match
grep-find-ignored-files
and subdirectories whose names match
grep-find-ignored-directories
.
Q regexp
RET to
RET
Perform query-replace-regexp
on each of the specified files,
replacing matches for regexp
with the string
to
(dired-do-find-regexp-and-replace
).
This command is a variant of xref-query-replace-in-results
. It
presents an *xref*
buffer that lists all the matches of regexp
,
and you can use the special commands in that buffer (see Xref Commands). In particular, if you exit the query replace loop, you
can use r in that buffer to replace more matches.
See Identifier Search.
Like with dired-do-find-regexp
, if any of the marked files are
directories, this command performs replacements in all of the files in
those directories, and in any of their subdirectories, recursively,
except for files whose names match grep-find-ignored-files
and
subdirectories whose names match grep-find-ignored-directories
.
Next: Shell Commands in Dired, Previous: Marks vs Flags, Up: Dired [Contents][Index]