1. Computing & Technology

Discuss in my forum

Transforming File Names

Emacs Documentation

By , About.com Guide

Transforming File Names in Dired

This section describes Dired commands which alter file names in a systematic way.

Like the basic Dired file-manipulation commands (see Operating on Files), the commands described here operate either on the next n files, or on all files marked with *, or on the current file. (To mark files, use the commands described in Marks vs Flags.)

All of the commands described in this section work interactively: they ask you to confirm the operation for each candidate file. Thus, you can select more files than you actually need to operate on (e.g., with a regexp that matches many files), and then refine the selection by typing y or n when the command prompts for confirmation.

  • % u
    Rename each of the selected files to an upper-case name (dired-upcase). If the old file names are Foo and bar, the new names are FOO and BAR.
  • % l
    Rename each of the selected files to a lower-case name (dired-downcase). If the old file names are Foo and bar, the new names are foo and bar.
  • % R from <RET> to <RET>
  • % C from <RET> to <RET>
  • % H from <RET> to <RET>
  • % S from <RET> to <RET>
    These four commands rename, copy, make hard links and make soft links, in each case computing the new name by regular-expression substitution from the name of the old file.

The four regular-expression substitution commands effectively perform a search-and-replace on the selected file names in the Dired buffer. They read two arguments: a regular expression from, and a substitution pattern to.

The commands match each "old" file name against the regular expression from, and then replace the matching part with to. You can use \&amp; and \digit in to to refer to all or part of what the pattern matched in the old file name, as in replace-regexp (see Regexp Replace). If the regular expression matches more than once in a file name, only the first match is replaced.

For example, % R ^.*$ <RET> x-\&amp; <RET> renames each selected file by prepending x- to its name. The inverse of this, removing x- from the front of each file name, is also possible: one method is % R ^x-\(.*\)$ <RET> \1 <RET>; another is % R ^x- <RET> <RET>. (Use ^ and $ to anchor matches that should span the whole filename.)

Normally, the replacement process does not consider the files' directory names; it operates on the file name within the directory. If you specify a numeric argument of zero, then replacement affects the entire absolute file name including directory name. (Non-zero argument specifies the number of files to operate on.)

* Emacs Manual Index

©2012 About.com. All rights reserved.

A part of The New York Times Company.