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 next n files, starting with the current file. (If n 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 variable `dired-dwim-target` is non-`nil`, and if there is another Dired buffer displayed in the next window, that other buffer’s directory is suggested instead.

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`.

  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`).

  Dired automatically changes the visited file name of buffers associated with renamed files so that they refer to the new names.

`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 (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.

`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 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]