| 1 |
@c This is part of the Emacs manual. |
|---|
| 2 |
@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, |
|---|
| 3 |
@c 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
|---|
| 4 |
@c See file emacs.texi for copying conditions. |
|---|
| 5 |
@node Dired, Calendar/Diary, Rmail, Top |
|---|
| 6 |
@chapter Dired, the Directory Editor |
|---|
| 7 |
@c This node is referenced in the tutorial. When renaming or deleting |
|---|
| 8 |
@c it, the tutorial needs to be adjusted. |
|---|
| 9 |
@cindex Dired |
|---|
| 10 |
@cindex file management |
|---|
| 11 |
|
|---|
| 12 |
Dired makes an Emacs buffer containing a listing of a directory, and |
|---|
| 13 |
optionally some of its subdirectories as well. You can use the normal |
|---|
| 14 |
Emacs commands to move around in this buffer, and special Dired commands |
|---|
| 15 |
to operate on the files listed. |
|---|
| 16 |
|
|---|
| 17 |
The Dired buffer is ``read-only,'' and inserting text in it is not |
|---|
| 18 |
useful, so ordinary printing characters such as @kbd{d} and @kbd{x} |
|---|
| 19 |
are redefined for special Dired commands. Some Dired commands |
|---|
| 20 |
@dfn{mark} or @dfn{flag} the @dfn{current file} (that is, the file on |
|---|
| 21 |
the current line); other commands operate on the marked files or on |
|---|
| 22 |
the flagged files. You first mark certain files in order to operate |
|---|
| 23 |
on all of them with on command. |
|---|
| 24 |
|
|---|
| 25 |
The Dired-X package provides various extra features for Dired mode. |
|---|
| 26 |
@xref{Top, Dired-X,,dired-x, Dired Extra Version 2 User's Manual}. |
|---|
| 27 |
|
|---|
| 28 |
@menu |
|---|
| 29 |
* Enter: Dired Enter. How to invoke Dired. |
|---|
| 30 |
* Navigation: Dired Navigation. Special motion commands in the Dired buffer. |
|---|
| 31 |
* Deletion: Dired Deletion. Deleting files with Dired. |
|---|
| 32 |
* Flagging Many Files:: Flagging files based on their names. |
|---|
| 33 |
* Visit: Dired Visiting. Other file operations through Dired. |
|---|
| 34 |
* Marks vs Flags:: Flagging for deletion vs marking. |
|---|
| 35 |
* Operating on Files:: How to copy, rename, print, compress, etc. |
|---|
| 36 |
either one file or several files. |
|---|
| 37 |
* Shell Commands in Dired:: Running a shell command on the marked files. |
|---|
| 38 |
* Transforming File Names:: Using patterns to rename multiple files. |
|---|
| 39 |
* Comparison in Dired:: Running `diff' by way of Dired. |
|---|
| 40 |
* Subdirectories in Dired:: Adding subdirectories to the Dired buffer. |
|---|
| 41 |
@ifnottex |
|---|
| 42 |
* Subdir Switches:: Subdirectory switches in Dired. |
|---|
| 43 |
@end ifnottex |
|---|
| 44 |
* Subdirectory Motion:: Moving across subdirectories, and up and down. |
|---|
| 45 |
* Hiding Subdirectories:: Making subdirectories visible or invisible. |
|---|
| 46 |
* Updating: Dired Updating. Discarding lines for files of no interest. |
|---|
| 47 |
* Find: Dired and Find. Using `find' to choose the files for Dired. |
|---|
| 48 |
* Wdired:: Operating on files by editing the Dired buffer. |
|---|
| 49 |
* Image-Dired:: Viewing image thumbnails in Dired |
|---|
| 50 |
* Misc: Misc Dired Features. Various other features. |
|---|
| 51 |
@end menu |
|---|
| 52 |
|
|---|
| 53 |
@node Dired Enter |
|---|
| 54 |
@section Entering Dired |
|---|
| 55 |
|
|---|
| 56 |
@findex dired |
|---|
| 57 |
@kindex C-x d |
|---|
| 58 |
@vindex dired-listing-switches |
|---|
| 59 |
To invoke Dired, do @kbd{C-x d} or @kbd{M-x dired}. The command |
|---|
| 60 |
reads a directory name or wildcard file name pattern as a minibuffer |
|---|
| 61 |
argument to specify the files to list. @kbd{C-x C-f} given a |
|---|
| 62 |
directory name also invokes Dired. Where @code{dired} differs from |
|---|
| 63 |
@code{list-directory} is that it puts the buffer into Dired mode, so |
|---|
| 64 |
that the special commands of Dired are available. |
|---|
| 65 |
|
|---|
| 66 |
The variable @code{dired-listing-switches} specifies the options to |
|---|
| 67 |
give to @code{ls} for listing the directory; this string @emph{must} |
|---|
| 68 |
contain @samp{-l}. If you use a numeric prefix argument with the |
|---|
| 69 |
@code{dired} command, you can specify the @code{ls} switches with the |
|---|
| 70 |
minibuffer before you enter the directory specification. No matter |
|---|
| 71 |
how they are specified, the @code{ls} switches can include short |
|---|
| 72 |
options (that is, single characters) requiring no arguments, and long |
|---|
| 73 |
options (starting with @samp{--}) whose arguments are specified with |
|---|
| 74 |
@samp{=}. |
|---|
| 75 |
|
|---|
| 76 |
On MS-Windows and MS-DOS systems, Emacs @emph{emulates} @code{ls}; |
|---|
| 77 |
see @ref{ls in Lisp}, for options and peculiarities of that emulation. |
|---|
| 78 |
|
|---|
| 79 |
|
|---|
| 80 |
@findex dired-other-window |
|---|
| 81 |
@kindex C-x 4 d |
|---|
| 82 |
@findex dired-other-frame |
|---|
| 83 |
@kindex C-x 5 d |
|---|
| 84 |
To display the Dired buffer in another window rather than in the |
|---|
| 85 |
selected window, use @kbd{C-x 4 d} (@code{dired-other-window}) instead |
|---|
| 86 |
of @kbd{C-x d}. @kbd{C-x 5 d} (@code{dired-other-frame}) uses a |
|---|
| 87 |
separate frame to display the Dired buffer. |
|---|
| 88 |
|
|---|
| 89 |
@node Dired Navigation |
|---|
| 90 |
@section Navigation in the Dired Buffer |
|---|
| 91 |
|
|---|
| 92 |
@kindex C-n @r{(Dired)} |
|---|
| 93 |
@kindex C-p @r{(Dired)} |
|---|
| 94 |
All the usual Emacs cursor motion commands are available in Dired |
|---|
| 95 |
buffers. The keys @kbd{C-n} and @kbd{C-p} are redefined to put the |
|---|
| 96 |
cursor at the beginning of the file name on the line, rather than at |
|---|
| 97 |
the beginning of the line. |
|---|
| 98 |
|
|---|
| 99 |
@kindex SPC @r{(Dired)} |
|---|
| 100 |
For extra convenience, @key{SPC} and @kbd{n} in Dired are equivalent |
|---|
| 101 |
to @kbd{C-n}. @kbd{p} is equivalent to @kbd{C-p}. (Moving by lines is |
|---|
| 102 |
so common in Dired that it deserves to be easy to type.) @key{DEL} |
|---|
| 103 |
(move up and unflag) is often useful simply for moving up. |
|---|
| 104 |
|
|---|
| 105 |
@findex dired-goto-file |
|---|
| 106 |
@kindex j @r{(Dired)} |
|---|
| 107 |
@kbd{j} (@code{dired-goto-file}) moves point to the line that |
|---|
| 108 |
describes a specified file or directory. |
|---|
| 109 |
|
|---|
| 110 |
Some additional navigation commands are available when the Dired |
|---|
| 111 |
buffer includes several directories. @xref{Subdirectory Motion}. |
|---|
| 112 |
|
|---|
| 113 |
@node Dired Deletion |
|---|
| 114 |
@section Deleting Files with Dired |
|---|
| 115 |
@cindex flagging files (in Dired) |
|---|
| 116 |
@cindex deleting files (in Dired) |
|---|
| 117 |
|
|---|
| 118 |
One of the most frequent uses of Dired is to first @dfn{flag} files for |
|---|
| 119 |
deletion, then delete the files that were flagged. |
|---|
| 120 |
|
|---|
| 121 |
@table @kbd |
|---|
| 122 |
@item d |
|---|
| 123 |
Flag this file for deletion. |
|---|
| 124 |
@item u |
|---|
| 125 |
Remove deletion flag on this line. |
|---|
| 126 |
@item @key{DEL} |
|---|
| 127 |
Move point to previous line and remove the deletion flag on that line. |
|---|
| 128 |
@item x |
|---|
| 129 |
Delete the files that are flagged for deletion. |
|---|
| 130 |
@end table |
|---|
| 131 |
|
|---|
| 132 |
@kindex d @r{(Dired)} |
|---|
| 133 |
@findex dired-flag-file-deletion |
|---|
| 134 |
You can flag a file for deletion by moving to the line describing |
|---|
| 135 |
the file and typing @kbd{d} (@code{dired-flag-file-deletion}). The |
|---|
| 136 |
deletion flag is visible as a @samp{D} at the beginning of the line. |
|---|
| 137 |
This command moves point to the next line, so that repeated @kbd{d} |
|---|
| 138 |
commands flag successive files. A numeric argument serves as a repeat |
|---|
| 139 |
count. |
|---|
| 140 |
|
|---|
| 141 |
@kindex u @r{(Dired deletion)} |
|---|
| 142 |
@kindex DEL @r{(Dired)} |
|---|
| 143 |
The reason for flagging files for deletion, rather than deleting |
|---|
| 144 |
files immediately, is to reduce the danger of deleting a file |
|---|
| 145 |
accidentally. Until you direct Dired to delete the flagged files, you |
|---|
| 146 |
can remove deletion flags using the commands @kbd{u} and @key{DEL}. |
|---|
| 147 |
@kbd{u} (@code{dired-unmark}) works just like @kbd{d}, but removes |
|---|
| 148 |
flags rather than making flags. @key{DEL} |
|---|
| 149 |
(@code{dired-unmark-backward}) moves upward, removing flags; it is |
|---|
| 150 |
like @kbd{u} with argument @minus{}1. |
|---|
| 151 |
|
|---|
| 152 |
@kindex x @r{(Dired)} |
|---|
| 153 |
@findex dired-do-flagged-delete |
|---|
| 154 |
@cindex expunging (Dired) |
|---|
| 155 |
To delete the flagged files, type @kbd{x} |
|---|
| 156 |
(@code{dired-do-flagged-delete}). (This is also known as |
|---|
| 157 |
@dfn{expunging}.) This command first displays a list of all the file |
|---|
| 158 |
names flagged for deletion, and requests confirmation with @kbd{yes}. |
|---|
| 159 |
If you confirm, Dired deletes the flagged files, then deletes their |
|---|
| 160 |
lines from the text of the Dired buffer. The Dired buffer, with |
|---|
| 161 |
somewhat fewer lines, remains selected. |
|---|
| 162 |
|
|---|
| 163 |
If you answer @kbd{no} or quit with @kbd{C-g} when asked to confirm, you |
|---|
| 164 |
return immediately to Dired, with the deletion flags still present in |
|---|
| 165 |
the buffer, and no files actually deleted. |
|---|
| 166 |
|
|---|
| 167 |
@cindex recursive deletion |
|---|
| 168 |
@vindex dired-recursive-deletes |
|---|
| 169 |
You can delete empty directories just like other files, but normally |
|---|
| 170 |
Dired cannot delete directories that are nonempty. If the variable |
|---|
| 171 |
@code{dired-recursive-deletes} is non-@code{nil}, then Dired can |
|---|
| 172 |
delete nonempty directories including all their contents. That can |
|---|
| 173 |
be somewhat risky. |
|---|
| 174 |
|
|---|
| 175 |
@node Flagging Many Files |
|---|
| 176 |
@section Flagging Many Files at Once |
|---|
| 177 |
@cindex flagging many files for deletion (in Dired) |
|---|
| 178 |
|
|---|
| 179 |
@table @kbd |
|---|
| 180 |
@item # |
|---|
| 181 |
Flag all auto-save files (files whose names start and end with @samp{#}) |
|---|
| 182 |
for deletion (@pxref{Auto Save}). |
|---|
| 183 |
|
|---|
| 184 |
@item ~ |
|---|
| 185 |
Flag all backup files (files whose names end with @samp{~}) for deletion |
|---|
| 186 |
(@pxref{Backup}). |
|---|
| 187 |
|
|---|
| 188 |
@item & |
|---|
| 189 |
Flag for deletion all files with certain kinds of names which suggest |
|---|
| 190 |
you could easily create those files again. |
|---|
| 191 |
|
|---|
| 192 |
@item .@: @r{(Period)} |
|---|
| 193 |
Flag excess numeric backup files for deletion. The oldest and newest |
|---|
| 194 |
few backup files of any one file are exempt; the middle ones are |
|---|
| 195 |
flagged. |
|---|
| 196 |
|
|---|
| 197 |
@item % d @var{regexp} @key{RET} |
|---|
| 198 |
Flag for deletion all files whose names match the regular expression |
|---|
| 199 |
@var{regexp}. |
|---|
| 200 |
@end table |
|---|
| 201 |
|
|---|
| 202 |
The @kbd{#}, @kbd{~}, @kbd{&}, and @kbd{.} commands flag many files for |
|---|
| 203 |
deletion, based on their file names. These commands are useful |
|---|
| 204 |
precisely because they do not themselves delete any files; you can |
|---|
| 205 |
remove the deletion flags from any flagged files that you really wish to |
|---|
| 206 |
keep.@refill |
|---|
| 207 |
|
|---|
| 208 |
@kindex & @r{(Dired)} |
|---|
| 209 |
@findex dired-flag-garbage-files |
|---|
| 210 |
@vindex dired-garbage-files-regexp |
|---|
| 211 |
@cindex deleting some backup files |
|---|
| 212 |
@kbd{&} (@code{dired-flag-garbage-files}) flags files whose names |
|---|
| 213 |
match the regular expression specified by the variable |
|---|
| 214 |
@code{dired-garbage-files-regexp}. By default, this matches certain |
|---|
| 215 |
files produced by @TeX{}, @samp{.bak} files, and the @samp{.orig} and |
|---|
| 216 |
@samp{.rej} files produced by @code{patch}. |
|---|
| 217 |
|
|---|
| 218 |
@kindex # @r{(Dired)} |
|---|
| 219 |
@findex dired-flag-auto-save-files |
|---|
| 220 |
@cindex deleting auto-save files |
|---|
| 221 |
@kbd{#} (@code{dired-flag-auto-save-files}) flags for deletion all |
|---|
| 222 |
files whose names look like auto-save files---that is, files whose |
|---|
| 223 |
names begin and end with @samp{#}. @xref{Auto Save}. |
|---|
| 224 |
|
|---|
| 225 |
@kindex ~ @r{(Dired)} |
|---|
| 226 |
@findex dired-flag-backup-files |
|---|
| 227 |
@kbd{~} (@code{dired-flag-backup-files}) flags for deletion all |
|---|
| 228 |
files whose names say they are backup files---that is, files whose |
|---|
| 229 |
names end in @samp{~}. @xref{Backup}. |
|---|
| 230 |
|
|---|
| 231 |
@kindex . @r{(Dired)} |
|---|
| 232 |
@vindex dired-kept-versions |
|---|
| 233 |
@findex dired-clean-directory |
|---|
| 234 |
@kbd{.} (period, @code{dired-clean-directory}) flags just some of the |
|---|
| 235 |
backup files for deletion: all but the oldest few and newest few backups |
|---|
| 236 |
of any one file. Normally @code{dired-kept-versions} (@strong{not} |
|---|
| 237 |
@code{kept-new-versions}; that applies only when saving) specifies the |
|---|
| 238 |
number of newest versions of each file to keep, and |
|---|
| 239 |
@code{kept-old-versions} specifies the number of oldest versions to |
|---|
| 240 |
keep. |
|---|
| 241 |
|
|---|
| 242 |
Period with a positive numeric argument, as in @kbd{C-u 3 .}, |
|---|
| 243 |
specifies the number of newest versions to keep, overriding |
|---|
| 244 |
@code{dired-kept-versions}. A negative numeric argument overrides |
|---|
| 245 |
@code{kept-old-versions}, using minus the value of the argument to |
|---|
| 246 |
specify the number of oldest versions of each file to keep. |
|---|
| 247 |
|
|---|
| 248 |
@findex dired-flag-files-regexp |
|---|
| 249 |
@kindex % d @r{(Dired)} |
|---|
| 250 |
The @kbd{% d} command flags all files whose names match a specified |
|---|
| 251 |
regular expression (@code{dired-flag-files-regexp}). Only the |
|---|
| 252 |
non-directory part of the file name is used in matching. You can use |
|---|
| 253 |
@samp{^} and @samp{$} to anchor matches. You can exclude certain |
|---|
| 254 |
subdirectories from marking by hiding them while you use @kbd{% d}. |
|---|
| 255 |
@xref{Hiding Subdirectories}. |
|---|
| 256 |
|
|---|
| 257 |
@node Dired Visiting |
|---|
| 258 |
@section Visiting Files in Dired |
|---|
| 259 |
|
|---|
| 260 |
There are several Dired commands for visiting or examining the files |
|---|
| 261 |
listed in the Dired buffer. All of them apply to the current line's |
|---|
| 262 |
file; if that file is really a directory, these commands invoke Dired on |
|---|
| 263 |
that subdirectory (making a separate Dired buffer). |
|---|
| 264 |
|
|---|
| 265 |
@table @kbd |
|---|
| 266 |
@item f |
|---|
| 267 |
@kindex f @r{(Dired)} |
|---|
| 268 |
@findex dired-find-file |
|---|
| 269 |
Visit the file described on the current line, like typing @kbd{C-x C-f} |
|---|
| 270 |
and supplying that file name (@code{dired-find-file}). @xref{Visiting}. |
|---|
| 271 |
|
|---|
| 272 |
@item @key{RET} |
|---|
| 273 |
@itemx e |
|---|
| 274 |
@kindex RET @r{(Dired)} |
|---|
| 275 |
@kindex e @r{(Dired)} |
|---|
| 276 |
Equivalent to @kbd{f}. |
|---|
| 277 |
|
|---|
| 278 |
@ignore @c This command seems too risky to document at all. |
|---|
| 279 |
@item a |
|---|
| 280 |
@kindex a @r{(Dired)} |
|---|
| 281 |
@findex dired-find-alternate-file |
|---|
| 282 |
Like @kbd{f}, but replaces the contents of the Dired buffer with |
|---|
| 283 |
that of an alternate file or directory (@code{dired-find-alternate-file}). |
|---|
| 284 |
@end ignore |
|---|
| 285 |
|
|---|
| 286 |
@item o |
|---|
| 287 |
@kindex o @r{(Dired)} |
|---|
| 288 |
@findex dired-find-file-other-window |
|---|
| 289 |
Like @kbd{f}, but uses another window to display the file's buffer |
|---|
| 290 |
(@code{dired-find-file-other-window}). The Dired buffer remains visible |
|---|
| 291 |
in the first window. This is like using @kbd{C-x 4 C-f} to visit the |
|---|
| 292 |
file. @xref{Windows}. |
|---|
| 293 |
|
|---|
| 294 |
@item C-o |
|---|
| 295 |
@kindex C-o @r{(Dired)} |
|---|
| 296 |
@findex dired-display-file |
|---|
| 297 |
Visit the file described on the current line, and display the buffer in |
|---|
| 298 |
another window, but do not select that window (@code{dired-display-file}). |
|---|
| 299 |
|
|---|
| 300 |
@item Mouse-1 |
|---|
| 301 |
@itemx Mouse-2 |
|---|
| 302 |
@findex dired-mouse-find-file-other-window |
|---|
| 303 |
Visit the file named by the line you click on |
|---|
| 304 |
(@code{dired-mouse-find-file-other-window}). This uses another window |
|---|
| 305 |
to display the file, like the @kbd{o} command. |
|---|
| 306 |
|
|---|
| 307 |
@item v |
|---|
| 308 |
@kindex v @r{(Dired)} |
|---|
| 309 |
@findex dired-view-file |
|---|
| 310 |
View the file described on the current line, using @kbd{M-x view-file} |
|---|
| 311 |
(@code{dired-view-file}). Viewing a file with @code{view-file} is |
|---|
| 312 |
like visiting it, but is slanted toward moving around in the file |
|---|
| 313 |
conveniently and does not allow changing the file. @xref{Misc File |
|---|
| 314 |
Ops, View File, Miscellaneous File Operations}. |
|---|
| 315 |
|
|---|
| 316 |
@item ^ |
|---|
| 317 |
@kindex ^ @r{(Dired)} |
|---|
| 318 |
@findex dired-up-directory |
|---|
| 319 |
Visit the parent directory of the current directory |
|---|
| 320 |
(@code{dired-up-directory}). This is equivalent to moving to the line |
|---|
| 321 |
for @file{..} and typing @kbd{f} there. |
|---|
| 322 |
@end table |
|---|
| 323 |
|
|---|
| 324 |
@node Marks vs Flags |
|---|
| 325 |
@section Dired Marks vs. Flags |
|---|
| 326 |
|
|---|
| 327 |
@cindex marking many files (in Dired) |
|---|
| 328 |
Instead of flagging a file with @samp{D}, you can @dfn{mark} the |
|---|
| 329 |
file with some other character (usually @samp{*}). Most Dired |
|---|
| 330 |
commands to operate on files use the files marked with @samp{*}. The |
|---|
| 331 |
only command that operates on flagged files is @kbd{x}, which expunges |
|---|
| 332 |
them. |
|---|
| 333 |
|
|---|
| 334 |
Here are some commands for marking with @samp{*}, for unmarking, and |
|---|
| 335 |
for operating on marks. (@xref{Dired Deletion}, for commands to flag |
|---|
| 336 |
and unflag files.) |
|---|
| 337 |
|
|---|
| 338 |
@table @kbd |
|---|
| 339 |
@item m |
|---|
| 340 |
@itemx * m |
|---|
| 341 |
@kindex m @r{(Dired)} |
|---|
| 342 |
@kindex * m @r{(Dired)} |
|---|
| 343 |
@findex dired-mark |
|---|
| 344 |
Mark the current file with @samp{*} (@code{dired-mark}). With a numeric |
|---|
| 345 |
argument @var{n}, mark the next @var{n} files starting with the current |
|---|
| 346 |
file. (If @var{n} is negative, mark the previous @minus{}@var{n} |
|---|
| 347 |
files.) |
|---|
| 348 |
|
|---|
| 349 |
@item * * |
|---|
| 350 |
@kindex * * @r{(Dired)} |
|---|
| 351 |
@findex dired-mark-executables |
|---|
| 352 |
@cindex marking executable files (in Dired) |
|---|
| 353 |
Mark all executable files with @samp{*} |
|---|
| 354 |
(@code{dired-mark-executables}). With a numeric argument, unmark all |
|---|
| 355 |
those files. |
|---|
| 356 |
|
|---|
| 357 |
@item * @@ |
|---|
| 358 |
@kindex * @@ @r{(Dired)} |
|---|
| 359 |
@findex dired-mark-symlinks |
|---|
| 360 |
@cindex marking symbolic links (in Dired) |
|---|
| 361 |
Mark all symbolic links with @samp{*} (@code{dired-mark-symlinks}). |
|---|
| 362 |
With a numeric argument, unmark all those files. |
|---|
| 363 |
|
|---|
| 364 |
@item * / |
|---|
| 365 |
@kindex * / @r{(Dired)} |
|---|
| 366 |
@findex dired-mark-directories |
|---|
| 367 |
@cindex marking subdirectories (in Dired) |
|---|
| 368 |
Mark with @samp{*} all files which are directories, except for |
|---|
| 369 |
@file{.} and @file{..} (@code{dired-mark-directories}). With a numeric |
|---|
| 370 |
argument, unmark all those files. |
|---|
| 371 |
|
|---|
| 372 |
@item * s |
|---|
| 373 |
@kindex * s @r{(Dired)} |
|---|
| 374 |
@findex dired-mark-subdir-files |
|---|
| 375 |
Mark all the files in the current subdirectory, aside from @file{.} |
|---|
| 376 |
and @file{..} (@code{dired-mark-subdir-files}). |
|---|
| 377 |
|
|---|
| 378 |
@item u |
|---|
| 379 |
@itemx * u |
|---|
| 380 |
@kindex u @r{(Dired)} |
|---|
| 381 |
@kindex * u @r{(Dired)} |
|---|
| 382 |
@findex dired-unmark |
|---|
| 383 |
Remove any mark on this line (@code{dired-unmark}). |
|---|
| 384 |
|
|---|
| 385 |
@item @key{DEL} |
|---|
| 386 |
@itemx * @key{DEL} |
|---|
| 387 |
@kindex * DEL @r{(Dired)} |
|---|
| 388 |
@findex dired-unmark-backward |
|---|
| 389 |
@cindex unmarking files (in Dired) |
|---|
| 390 |
Move point to previous line and remove any mark on that line |
|---|
| 391 |
(@code{dired-unmark-backward}). |
|---|
| 392 |
|
|---|
| 393 |
@item * ! |
|---|
| 394 |
@itemx U |
|---|
| 395 |
@kindex * ! @r{(Dired)} |
|---|
| 396 |
@kindex U @r{(Dired)} |
|---|
| 397 |
@findex dired-unmark-all-marks |
|---|
| 398 |
Remove all marks from all the files in this Dired buffer |
|---|
| 399 |
(@code{dired-unmark-all-marks}). |
|---|
| 400 |
|
|---|
| 401 |
@item * ? @var{markchar} |
|---|
| 402 |
@itemx M-@key{DEL} |
|---|
| 403 |
@kindex * ? @r{(Dired)} |
|---|
| 404 |
@kindex M-DEL @r{(Dired)} |
|---|
| 405 |
@findex dired-unmark-all-files |
|---|
| 406 |
Remove all marks that use the character @var{markchar} |
|---|
| 407 |
(@code{dired-unmark-all-files}). The argument is a single |
|---|
| 408 |
character---do not use @key{RET} to terminate it. See the description |
|---|
| 409 |
of the @kbd{* c} command below, which lets you replace one mark |
|---|
| 410 |
character with another. |
|---|
| 411 |
|
|---|
| 412 |
With a numeric argument, this command queries about each marked file, |
|---|
| 413 |
asking whether to remove its mark. You can answer @kbd{y} meaning yes, |
|---|
| 414 |
@kbd{n} meaning no, or @kbd{!} to remove the marks from the remaining |
|---|
| 415 |
files without asking about them. |
|---|
| 416 |
|
|---|
| 417 |
@item * C-n |
|---|
| 418 |
@itemx M-@} |
|---|
| 419 |
@findex dired-next-marked-file |
|---|
| 420 |
@kindex * C-n @r{(Dired)} |
|---|
| 421 |
@kindex M-@} @r{(Dired)} |
|---|
| 422 |
Move down to the next marked file (@code{dired-next-marked-file}) |
|---|
| 423 |
A file is ``marked'' if it has any kind of mark. |
|---|
| 424 |
|
|---|
| 425 |
@item * C-p |
|---|
| 426 |
@itemx M-@{ |
|---|
| 427 |
@findex dired-prev-marked-file |
|---|
| 428 |
@kindex * C-p @r{(Dired)} |
|---|
| 429 |
@kindex M-@{ @r{(Dired)} |
|---|
| 430 |
Move up to the previous marked file (@code{dired-prev-marked-file}) |
|---|
| 431 |
|
|---|
| 432 |
@item t |
|---|
| 433 |
@itemx * t |
|---|
| 434 |
@kindex t @r{(Dired)} |
|---|
| 435 |
@kindex * t @r{(Dired)} |
|---|
| 436 |
@findex dired-toggle-marks |
|---|
| 437 |
@cindex toggling marks (in Dired) |
|---|
| 438 |
Toggle all marks (@code{dired-toggle-marks}): files marked with @samp{*} |
|---|
| 439 |
become unmarked, and unmarked files are marked with @samp{*}. Files |
|---|
| 440 |
marked in any other way are not affected. |
|---|
| 441 |
|
|---|
| 442 |
@item * c @var{old-markchar} @var{new-markchar} |
|---|
| 443 |
@kindex * c @r{(Dired)} |
|---|
| 444 |
@findex dired-change-marks |
|---|
| 445 |
Replace all marks that use the character @var{old-markchar} with marks |
|---|
| 446 |
that use the character @var{new-markchar} (@code{dired-change-marks}). |
|---|
| 447 |
This command is the primary way to create or use marks other than |
|---|
| 448 |
@samp{*} or @samp{D}. The arguments are single characters---do not use |
|---|
| 449 |
@key{RET} to terminate them. |
|---|
| 450 |
|
|---|
| 451 |
You can use almost any character as a mark character by means of this |
|---|
| 452 |
command, to distinguish various classes of files. If @var{old-markchar} |
|---|
| 453 |
is a space (@samp{ }), then the command operates on all unmarked files; |
|---|
| 454 |
if @var{new-markchar} is a space, then the command unmarks the files it |
|---|
| 455 |
acts on. |
|---|
| 456 |
|
|---|
| 457 |
To illustrate the power of this command, here is how to put @samp{D} |
|---|
| 458 |
flags on all the files that have no marks, while unflagging all those |
|---|
| 459 |
that already have @samp{D} flags: |
|---|
| 460 |
|
|---|
| 461 |
@example |
|---|
| 462 |
* c D t * c SPC D * c t SPC |
|---|
| 463 |
@end example |
|---|
| 464 |
|
|---|
| 465 |
This assumes that no files were already marked with @samp{t}. |
|---|
| 466 |
|
|---|
| 467 |
@item % m @var{regexp} @key{RET} |
|---|
| 468 |
@itemx * % @var{regexp} @key{RET} |
|---|
| 469 |
@findex dired-mark-files-regexp |
|---|
| 470 |
@kindex % m @r{(Dired)} |
|---|
| 471 |
@kindex * % @r{(Dired)} |
|---|
| 472 |
Mark (with @samp{*}) all files whose names match the regular expression |
|---|
| 473 |
@var{regexp} (@code{dired-mark-files-regexp}). This command is like |
|---|
| 474 |
@kbd{% d}, except that it marks files with @samp{*} instead of flagging |
|---|
| 475 |
with @samp{D}. |
|---|
| 476 |
|
|---|
| 477 |
Only the non-directory part of the file name is used in matching. Use |
|---|
| 478 |
@samp{^} and @samp{$} to anchor matches. You can exclude |
|---|
| 479 |
subdirectories by temporarily hiding them (@pxref{Hiding |
|---|
| 480 |
Subdirectories}). |
|---|
| 481 |
|
|---|
| 482 |
@item % g @var{regexp} @key{RET} |
|---|
| 483 |
@findex dired-mark-files-containing-regexp |
|---|
| 484 |
@kindex % g @r{(Dired)} |
|---|
| 485 |
@cindex finding files containing regexp matches (in Dired) |
|---|
| 486 |
Mark (with @samp{*}) all files whose @emph{contents} contain a match for |
|---|
| 487 |
the regular expression @var{regexp} |
|---|
| 488 |
(@code{dired-mark-files-containing-regexp}). This command is like |
|---|
| 489 |
@kbd{% m}, except that it searches the file contents instead of the file |
|---|
| 490 |
name. |
|---|
| 491 |
|
|---|
| 492 |
@item C-x u |
|---|
| 493 |
@itemx C-_ |
|---|
| 494 |
@itemx C-/ |
|---|
| 495 |
@kindex C-_ @r{(Dired)} |
|---|
| 496 |
@findex dired-undo |
|---|
| 497 |
Undo changes in the Dired buffer, such as adding or removing |
|---|
| 498 |
marks (@code{dired-undo}). @emph{This command does not revert the |
|---|
| 499 |
actual file operations, nor recover lost files!} It just undoes |
|---|
| 500 |
changes in the buffer itself. |
|---|
| 501 |
|
|---|
| 502 |
In some cases, using this after commands that operate on files can |
|---|
| 503 |
cause trouble. For example, after renaming one or more files, |
|---|
| 504 |
@code{dired-undo} restores the original names in the Dired buffer, |
|---|
| 505 |
which gets the Dired buffer out of sync with the actual contents of |
|---|
| 506 |
the directory. |
|---|
| 507 |
@end table |
|---|
| 508 |
|
|---|
| 509 |
@node Operating on Files |
|---|
| 510 |
@section Operating on Files |
|---|
| 511 |
@cindex operating on files in Dired |
|---|
| 512 |
|
|---|
| 513 |
This section describes the basic Dired commands to operate on one file |
|---|
| 514 |
or several files. All of these commands are capital letters; all of |
|---|
| 515 |
them use the minibuffer, either to read an argument or to ask for |
|---|
| 516 |
confirmation, before they act. All of them let you specify the |
|---|
| 517 |
files to manipulate in these ways: |
|---|
| 518 |
|
|---|
| 519 |
@itemize @bullet |
|---|
| 520 |
@item |
|---|
| 521 |
If you give the command a numeric prefix argument @var{n}, it operates |
|---|
| 522 |
on the next @var{n} files, starting with the current file. (If @var{n} |
|---|
| 523 |
is negative, the command operates on the @minus{}@var{n} files preceding |
|---|
| 524 |
the current line.) |
|---|
| 525 |
|
|---|
| 526 |
@item |
|---|
| 527 |
Otherwise, if some files are marked with @samp{*}, the command operates |
|---|
| 528 |
on all those files. |
|---|
| 529 |
|
|---|
| 530 |
@item |
|---|
| 531 |
Otherwise, the command operates on the current file only. |
|---|
| 532 |
@end itemize |
|---|
| 533 |
|
|---|
| 534 |
@noindent |
|---|
| 535 |
Certain other Dired commands, such as @kbd{!} and the @samp{%} |
|---|
| 536 |
commands, use the same conventions to decide which files to work on. |
|---|
| 537 |
|
|---|
| 538 |
@vindex dired-dwim-target |
|---|
| 539 |
@cindex two directories (in Dired) |
|---|
| 540 |
Commands which ask for a destination directory, such as those which |
|---|
| 541 |
copy and rename files or create links for them, try to guess the default |
|---|
| 542 |
target directory for the operation. Normally, they suggest the Dired |
|---|
| 543 |
buffer's default directory, but if the variable @code{dired-dwim-target} |
|---|
| 544 |
is non-@code{nil}, and if there is another Dired buffer displayed in the |
|---|
| 545 |
next window, that other buffer's directory is suggested instead. |
|---|
| 546 |
|
|---|
| 547 |
Here are the file-manipulating Dired commands that operate on files. |
|---|
| 548 |
|
|---|
| 549 |
@table @kbd |
|---|
| 550 |
@findex dired-do-copy |
|---|
| 551 |
@kindex C @r{(Dired)} |
|---|
| 552 |
@cindex copying files (in Dired) |
|---|
| 553 |
@item C @var{new} @key{RET} |
|---|
| 554 |
Copy the specified files (@code{dired-do-copy}). The argument @var{new} |
|---|
| 555 |
is the directory to copy into, or (if copying a single file) the new |
|---|
| 556 |
name. This is like the shell command @code{cp}. |
|---|
| 557 |
|
|---|
| 558 |
@vindex dired-copy-preserve-time |
|---|
| 559 |
If @code{dired-copy-preserve-time} is non-@code{nil}, then copying |
|---|
| 560 |
with this command preserves the modification time of the old file in |
|---|
| 561 |
the copy, like @samp{cp -p}. |
|---|
| 562 |
|
|---|
| 563 |
@vindex dired-recursive-copies |
|---|
| 564 |
@cindex recursive copying |
|---|
| 565 |
The variable @code{dired-recursive-copies} controls whether to copy |
|---|
| 566 |
directories recursively (like @samp{cp -r}). The default is |
|---|
| 567 |
@code{nil}, which means that directories cannot be copied. |
|---|
| 568 |
|
|---|
| 569 |
@item D |
|---|
| 570 |
@findex dired-do-delete |
|---|
| 571 |
@kindex D @r{(Dired)} |
|---|
| 572 |
Delete the specified files (@code{dired-do-delete}). This is like the |
|---|
| 573 |
shell command @code{rm}. |
|---|
| 574 |
|
|---|
| 575 |
Like the other commands in this section, this command operates on the |
|---|
| 576 |
@emph{marked} files, or the next @var{n} files. By contrast, @kbd{x} |
|---|
| 577 |
(@code{dired-do-flagged-delete}) deletes all @dfn{flagged} files. |
|---|
| 578 |
|
|---|
| 579 |
@findex dired-do-rename |
|---|
| 580 |
@kindex R @r{(Dired)} |
|---|
| 581 |
@cindex renaming files (in Dired) |
|---|
| 582 |
@cindex moving files (in Dired) |
|---|
| 583 |
@item R @var{new} @key{RET} |
|---|
| 584 |
Rename the specified files (@code{dired-do-rename}). If you rename a |
|---|
| 585 |
single file, the argument @var{new} is the new name of the file. If |
|---|
| 586 |
you rename several files, the argument @var{new} is the directory into |
|---|
| 587 |
which to move the files (this is like the shell command @code{mv}). |
|---|
| 588 |
|
|---|
| 589 |
Dired automatically changes the visited file name of buffers associated |
|---|
| 590 |
with renamed files so that they refer to the new names. |
|---|
| 591 |
|
|---|
| 592 |
@findex dired-do-hardlink |
|---|
| 593 |
@kindex H @r{(Dired)} |
|---|
| 594 |
@cindex hard links (in Dired) |
|---|
| 595 |
@item H @var{new} @key{RET} |
|---|
| 596 |
Make hard links to the specified files (@code{dired-do-hardlink}). |
|---|
| 597 |
This is like the shell command @code{ln}. The argument @var{new} is |
|---|
| 598 |
the directory to make the links in, or (if making just one link) the |
|---|
| 599 |
name to give the link. |
|---|
| 600 |
|
|---|
| 601 |
@findex dired-do-symlink |
|---|
| 602 |
@kindex S @r{(Dired)} |
|---|
| 603 |
@cindex symbolic links (creation in Dired) |
|---|
| 604 |
@item S @var{new} @key{RET} |
|---|
| 605 |
Make symbolic links to the specified files (@code{dired-do-symlink}). |
|---|
| 606 |
This is like @samp{ln -s}. The argument @var{new} is the directory to |
|---|
| 607 |
make the links in, or (if making just one link) the name to give the |
|---|
| 608 |
link. |
|---|
| 609 |
|
|---|
| 610 |
@findex dired-do-chmod |
|---|
| 611 |
@kindex M @r{(Dired)} |
|---|
| 612 |
@cindex changing file permissions (in Dired) |
|---|
| 613 |
@item M @var{modespec} @key{RET} |
|---|
| 614 |
Change the mode (also called ``permission bits'') of the specified files |
|---|
| 615 |
(@code{dired-do-chmod}). This uses the @code{chmod} program, so |
|---|
| 616 |
@var{modespec} can be any argument that @code{chmod} can handle. |
|---|
| 617 |
|
|---|
| 618 |
@findex dired-do-chgrp |
|---|
| 619 |
@kindex G @r{(Dired)} |
|---|
| 620 |
@cindex changing file group (in Dired) |
|---|
| 621 |
@item G @var{newgroup} @key{RET} |
|---|
| 622 |
Change the group of the specified files to @var{newgroup} |
|---|
| 623 |
(@code{dired-do-chgrp}). |
|---|
| 624 |
|
|---|
| 625 |
@findex dired-do-chown |
|---|
| 626 |
@kindex O @r{(Dired)} |
|---|
| 627 |
@cindex changing file owner (in Dired) |
|---|
| 628 |
@item O @var{newowner} @key{RET} |
|---|
| 629 |
Change the owner of the specified files to @var{newowner} |
|---|
| 630 |
(@code{dired-do-chown}). (On most systems, only the superuser can do |
|---|
| 631 |
this.) |
|---|
| 632 |
|
|---|
| 633 |
@vindex dired-chown-program |
|---|
| 634 |
The variable @code{dired-chown-program} specifies the name of the |
|---|
| 635 |
program to use to do the work (different systems put @code{chown} in |
|---|
| 636 |
different places). |
|---|
| 637 |
|
|---|
| 638 |
@findex dired-do-touch |
|---|
| 639 |
@kindex T @r{(Dired)} |
|---|
| 640 |
@cindex changing file time (in Dired) |
|---|
| 641 |
@item T @var{timestamp} @key{RET} |
|---|
| 642 |
Touch the specified files (@code{dired-do-touch}). This means |
|---|
| 643 |
updating their modification times to the present time. This is like |
|---|
| 644 |
the shell command @code{touch}. |
|---|
| 645 |
|
|---|
| 646 |
@findex dired-do-print |
|---|
| 647 |
@kindex P @r{(Dired)} |
|---|
| 648 |
@cindex printing files (in Dired) |
|---|
| 649 |
@item P @var{command} @key{RET} |
|---|
| 650 |
Print the specified files (@code{dired-do-print}). You must specify the |
|---|
| 651 |
command to print them with, but the minibuffer starts out with a |
|---|
| 652 |
suitable guess made using the variables @code{lpr-command} and |
|---|
| 653 |
@code{lpr-switches} (the same variables that @code{lpr-buffer} uses; |
|---|
| 654 |
@pxref{Printing}). |
|---|
| 655 |
|
|---|
| 656 |
@findex dired-do-compress |
|---|
| 657 |
@kindex Z @r{(Dired)} |
|---|
| 658 |
@cindex compressing files (in Dired) |
|---|
| 659 |
@item Z |
|---|
| 660 |
Compress the specified files (@code{dired-do-compress}). If the file |
|---|
| 661 |
appears to be a compressed file already, uncompress it instead. |
|---|
| 662 |
|
|---|
| 663 |
@findex dired-do-load |
|---|
| 664 |
@kindex L @r{(Dired)} |
|---|
| 665 |
@cindex loading several files (in Dired) |
|---|
| 666 |
@item L |
|---|
| 667 |
Load the specified Emacs Lisp files (@code{dired-do-load}). |
|---|
| 668 |
@xref{Lisp Libraries}. |
|---|
| 669 |
|
|---|
| 670 |
@findex dired-do-byte-compile |
|---|
| 671 |
@kindex B @r{(Dired)} |
|---|
| 672 |
@cindex byte-compiling several files (in Dired) |
|---|
| 673 |
@item B |
|---|
| 674 |
Byte compile the specified Emacs Lisp files |
|---|
| 675 |
(@code{dired-do-byte-compile}). @xref{Byte Compilation,, Byte |
|---|
| 676 |
Compilation, elisp, The Emacs Lisp Reference Manual}. |
|---|
| 677 |
|
|---|
| 678 |
@kindex A @r{(Dired)} |
|---|
| 679 |
@findex dired-do-search |
|---|
| 680 |
@cindex search multiple files (in Dired) |
|---|
| 681 |
@item A @var{regexp} @key{RET} |
|---|
| 682 |
Search all the specified files for the regular expression @var{regexp} |
|---|
| 683 |
(@code{dired-do-search}). |
|---|
| 684 |
|
|---|
| 685 |
This command is a variant of @code{tags-search}. The search stops at |
|---|
| 686 |
the first match it finds; use @kbd{M-,} to resume the search and find |
|---|
| 687 |
the next match. @xref{Tags Search}. |
|---|
| 688 |
|
|---|
| 689 |
@kindex Q @r{(Dired)} |
|---|
| 690 |
@findex dired-do-query-replace-regexp |
|---|
| 691 |
@cindex search and replace in multiple files (in Dired) |
|---|
| 692 |
@item Q @var{regexp} @key{RET} @var{to} @key{RET} |
|---|
| 693 |
Perform @code{query-replace-regexp} on each of the specified files, |
|---|
| 694 |
replacing matches for @var{regexp} with the string |
|---|
| 695 |
@var{to} (@code{dired-do-query-replace-regexp}). |
|---|
| 696 |
|
|---|
| 697 |
This command is a variant of @code{tags-query-replace}. If you exit the |
|---|
| 698 |
query replace loop, you can use @kbd{M-,} to resume the scan and replace |
|---|
| 699 |
more matches. @xref{Tags Search}. |
|---|
| 700 |
@end table |
|---|
| 701 |
|
|---|
| 702 |
@node Shell Commands in Dired |
|---|
| 703 |
@section Shell Commands in Dired |
|---|
| 704 |
@cindex shell commands, Dired |
|---|
| 705 |
|
|---|
| 706 |
@findex dired-do-shell-command |
|---|
| 707 |
@kindex ! @r{(Dired)} |
|---|
| 708 |
@kindex X @r{(Dired)} |
|---|
| 709 |
The Dired command @kbd{!} (@code{dired-do-shell-command}) reads a |
|---|
| 710 |
shell command string in the minibuffer and runs that shell command on |
|---|
| 711 |
all the specified files. (@kbd{X} is a synonym for @kbd{!}.) You can |
|---|
| 712 |
specify the files to operate on in the usual ways for Dired commands |
|---|
| 713 |
(@pxref{Operating on Files}). |
|---|
| 714 |
|
|---|
| 715 |
The working directory for the shell command is the top-level directory |
|---|
| 716 |
of the Dired buffer. |
|---|
| 717 |
|
|---|
| 718 |
There are two ways of applying a shell command to multiple files: |
|---|
| 719 |
|
|---|
| 720 |
@itemize @bullet |
|---|
| 721 |
@item |
|---|
| 722 |
If you use @samp{*} surrounded by whitespace in the shell command, |
|---|
| 723 |
then the command runs just once, with the list of file names |
|---|
| 724 |
substituted for the @samp{*}. The order of file names is the order of |
|---|
| 725 |
appearance in the Dired buffer. |
|---|
| 726 |
|
|---|
| 727 |
Thus, @kbd{! tar cf foo.tar * @key{RET}} runs @code{tar} on the entire |
|---|
| 728 |
list of file names, putting them into one tar file @file{foo.tar}. |
|---|
| 729 |
|
|---|
| 730 |
If you want to use @samp{*} as a shell wildcard with whitespace around |
|---|
| 731 |
it, write @samp{*""}. In the shell, this is equivalent to @samp{*}; |
|---|
| 732 |
but since the @samp{*} is not surrounded by whitespace, Dired does |
|---|
| 733 |
not treat it specially. |
|---|
| 734 |
|
|---|
| 735 |
@item |
|---|
| 736 |
If the command string doesn't contain @samp{*} surrounded by |
|---|
| 737 |
whitespace, then it runs once @emph{for each file}. Normally the file |
|---|
| 738 |
name is added at the end. |
|---|
| 739 |
|
|---|
| 740 |
For example, @kbd{! uudecode @key{RET}} runs @code{uudecode} on each |
|---|
| 741 |
file. |
|---|
| 742 |
|
|---|
| 743 |
@item |
|---|
| 744 |
However, if the command string contains @samp{?} surrounded by |
|---|
| 745 |
whitespace, the current file name is substituted for @samp{?} (rather |
|---|
| 746 |
than added at the end). You can use @samp{?} this way more than once |
|---|
| 747 |
in the command, and the same file name replaces each occurrence. |
|---|
| 748 |
@end itemize |
|---|
| 749 |
|
|---|
| 750 |
To iterate over the file names in a more complicated fashion, use an |
|---|
| 751 |
explicit shell loop. For example, here is how to uuencode each file, |
|---|
| 752 |
making the output file name by appending @samp{.uu} to the input file |
|---|
| 753 |
name: |
|---|
| 754 |
|
|---|
| 755 |
@example |
|---|
| 756 |
for file in * ; do uuencode "$file" "$file" >"$file".uu; done |
|---|
| 757 |
@end example |
|---|
| 758 |
|
|---|
| 759 |
The @kbd{!} command does not attempt to update the Dired buffer to |
|---|
| 760 |
show new or modified files, because it doesn't understand shell |
|---|
| 761 |
commands, and does not know what files the shell command changed. Use |
|---|
| 762 |
the @kbd{g} command to update the Dired buffer (@pxref{Dired |
|---|
| 763 |
Updating}). |
|---|
| 764 |
|
|---|
| 765 |
@node Transforming File Names |
|---|
| 766 |
@section Transforming File Names in Dired |
|---|
| 767 |
|
|---|
| 768 |
This section describes Dired commands which alter file names in a |
|---|
| 769 |
systematic way. Each command operates on some or all of the marked |
|---|
| 770 |
files, using a new name made by transforming the existing name. |
|---|
| 771 |
|
|---|
| 772 |
Like the basic Dired file-manipulation commands (@pxref{Operating on |
|---|
| 773 |
Files}), the commands described here operate either on the next |
|---|
| 774 |
@var{n} files, or on all files marked with @samp{*}, or on the current |
|---|
| 775 |
file. (To mark files, use the commands described in @ref{Marks vs |
|---|
| 776 |
Flags}.) |
|---|
| 777 |
|
|---|
| 778 |
All of the commands described in this section work |
|---|
| 779 |
@emph{interactively}: they ask you to confirm the operation for each |
|---|
| 780 |
candidate file. Thus, you can select more files than you actually |
|---|
| 781 |
need to operate on (e.g., with a regexp that matches many files), and |
|---|
| 782 |
then filter the selected names by typing @kbd{y} or @kbd{n} when the |
|---|
| 783 |
command prompts for confirmation. |
|---|
| 784 |
|
|---|
| 785 |
@table @kbd |
|---|
| 786 |
@findex dired-upcase |
|---|
| 787 |
@kindex % u @r{(Dired)} |
|---|
| 788 |
@cindex upcase file names |
|---|
| 789 |
@item % u |
|---|
| 790 |
Rename each of the selected files to an upper-case name |
|---|
| 791 |
(@code{dired-upcase}). If the old file names are @file{Foo} |
|---|
| 792 |
and @file{bar}, the new names are @file{FOO} and @file{BAR}. |
|---|
| 793 |
|
|---|
| 794 |
@item % l |
|---|
| 795 |
@findex dired-downcase |
|---|
| 796 |
@kindex % l @r{(Dired)} |
|---|
| 797 |
@cindex downcase file names |
|---|
| 798 |
Rename each of the selected files to a lower-case name |
|---|
| 799 |
(@code{dired-downcase}). If the old file names are @file{Foo} and |
|---|
| 800 |
@file{bar}, the new names are @file{foo} and @file{bar}. |
|---|
| 801 |
|
|---|
| 802 |
@item % R @var{from} @key{RET} @var{to} @key{RET} |
|---|
| 803 |
@kindex % R @r{(Dired)} |
|---|
| 804 |
@findex dired-do-rename-regexp |
|---|
| 805 |
@itemx % C @var{from} @key{RET} @var{to} @key{RET} |
|---|
| 806 |
@kindex % C @r{(Dired)} |
|---|
| 807 |
@findex dired-do-copy-regexp |
|---|
| 808 |
@itemx % H @var{from} @key{RET} @var{to} @key{RET} |
|---|
| 809 |
@kindex % H @r{(Dired)} |
|---|
| 810 |
@findex dired-do-hardlink-regexp |
|---|
| 811 |
@itemx % S @var{from} @key{RET} @var{to} @key{RET} |
|---|
| 812 |
@kindex % S @r{(Dired)} |
|---|
| 813 |
@findex dired-do-symlink-regexp |
|---|
| 814 |
These four commands rename, copy, make hard links and make soft links, |
|---|
| 815 |
in each case computing the new name by regular-expression substitution |
|---|
| 816 |
from the name of the old file. |
|---|
| 817 |
@end table |
|---|
| 818 |
|
|---|
| 819 |
The four regular-expression substitution commands effectively |
|---|
| 820 |
perform a search-and-replace on the selected file names. They read |
|---|
| 821 |
two arguments: a regular expression @var{from}, and a substitution |
|---|
| 822 |
pattern @var{to}; they match each ``old'' file name against |
|---|
| 823 |
@var{from}, and then replace the matching part with @var{to}. You can |
|---|
| 824 |
use @samp{\&} and @samp{\@var{digit}} in @var{to} to refer to all or |
|---|
| 825 |
part of what the pattern matched in the old file name, as in |
|---|
| 826 |
@code{replace-regexp} (@pxref{Regexp Replace}). If the regular |
|---|
| 827 |
expression matches more than once in a file name, only the first match |
|---|
| 828 |
is replaced. |
|---|
| 829 |
|
|---|
| 830 |
For example, @kbd{% R ^.*$ @key{RET} x-\& @key{RET}} renames each |
|---|
| 831 |
selected file by prepending @samp{x-} to its name. The inverse of this, |
|---|
| 832 |
removing @samp{x-} from the front of each file name, is also possible: |
|---|
| 833 |
one method is @kbd{% R ^x-\(.*\)$ @key{RET} \1 @key{RET}}; another is |
|---|
| 834 |
@kbd{% R ^x- @key{RET} @key{RET}}. (Use @samp{^} and @samp{$} to anchor |
|---|
| 835 |
matches that should span the whole file name.) |
|---|
| 836 |
|
|---|
| 837 |
Normally, the replacement process does not consider the files' |
|---|
| 838 |
directory names; it operates on the file name within the directory. If |
|---|
| 839 |
you specify a numeric argument of zero, then replacement affects the |
|---|
| 840 |
entire absolute file name including directory name. (A non-zero |
|---|
| 841 |
argument specifies the number of files to operate on.) |
|---|
| 842 |
|
|---|
| 843 |
You may want to select the set of files to operate on using the same |
|---|
| 844 |
regexp @var{from} that you will use to operate on them. To do this, |
|---|
| 845 |
mark those files with @kbd{% m @var{from} @key{RET}}, then use the |
|---|
| 846 |
same regular expression in the command to operate on the files. To |
|---|
| 847 |
make this more convenient, the @kbd{%} commands to operate on files |
|---|
| 848 |
use the last regular expression specified in any @kbd{%} command as a |
|---|
| 849 |
default. |
|---|
| 850 |
|
|---|
| 851 |
@node Comparison in Dired |
|---|
| 852 |
@section File Comparison with Dired |
|---|
| 853 |
@cindex file comparison (in Dired) |
|---|
| 854 |
@cindex compare files (in Dired) |
|---|
| 855 |
|
|---|
| 856 |
Here are two Dired commands that compare specified files using |
|---|
| 857 |
@code{diff}. They show the output in a buffer using Diff mode |
|---|
| 858 |
(@pxref{Comparing Files}). |
|---|
| 859 |
|
|---|
| 860 |
@table @kbd |
|---|
| 861 |
@item = |
|---|
| 862 |
@findex dired-diff |
|---|
| 863 |
@kindex = @r{(Dired)} |
|---|
| 864 |
Compare the current file (the file at point) with another file (the |
|---|
| 865 |
file at the mark) using the @code{diff} program (@code{dired-diff}). |
|---|
| 866 |
The file at the mark is the first argument of @code{diff}, and the |
|---|
| 867 |
file at point is the second argument. This refers to the ordinary |
|---|
| 868 |
Emacs mark, not Dired marks; use @kbd{C-@key{SPC}} |
|---|
| 869 |
(@code{set-mark-command}) to set the mark at the first file's line |
|---|
| 870 |
(@pxref{Setting Mark}). |
|---|
| 871 |
|
|---|
| 872 |
@findex dired-backup-diff |
|---|
| 873 |
@kindex M-= @r{(Dired)} |
|---|
| 874 |
@item M-= |
|---|
| 875 |
Compare the current file with its latest backup file |
|---|
| 876 |
(@code{dired-backup-diff}). If the current file is itself a backup, |
|---|
| 877 |
compare it with the file it is a backup of; this way, you can compare |
|---|
| 878 |
a file with any one of its backups. |
|---|
| 879 |
|
|---|
| 880 |
The backup file is the first file given to @code{diff}. |
|---|
| 881 |
@end table |
|---|
| 882 |
|
|---|
| 883 |
@node Subdirectories in Dired |
|---|
| 884 |
@section Subdirectories in Dired |
|---|
| 885 |
@cindex subdirectories in Dired |
|---|
| 886 |
@cindex expanding subdirectories in Dired |
|---|
| 887 |
|
|---|
| 888 |
A Dired buffer displays just one directory in the normal case; |
|---|
| 889 |
but you can optionally include its subdirectories as well. |
|---|
| 890 |
|
|---|
| 891 |
The simplest way to include multiple directories in one Dired buffer is |
|---|
| 892 |
to specify the options @samp{-lR} for running @code{ls}. (If you give a |
|---|
| 893 |
numeric argument when you run Dired, then you can specify these options |
|---|
| 894 |
in the minibuffer.) That produces a recursive directory listing showing |
|---|
| 895 |
all subdirectories at all levels. |
|---|
| 896 |
|
|---|
| 897 |
More often, you will want to show only specific subdirectories. You |
|---|
| 898 |
can do this with the @kbd{i} command: |
|---|
| 899 |
|
|---|
| 900 |
@table @kbd |
|---|
| 901 |
@findex dired-maybe-insert-subdir |
|---|
| 902 |
@kindex i @r{(Dired)} |
|---|
| 903 |
@item i |
|---|
| 904 |
@cindex inserted subdirectory (Dired) |
|---|
| 905 |
@cindex in-situ subdirectory (Dired) |
|---|
| 906 |
Insert the contents of a subdirectory later in the buffer. |
|---|
| 907 |
@end table |
|---|
| 908 |
|
|---|
| 909 |
Use the @kbd{i} (@code{dired-maybe-insert-subdir}) command on a line |
|---|
| 910 |
that describes a file which is a directory. It inserts the contents of |
|---|
| 911 |
that directory into the same Dired buffer, and moves there. Inserted |
|---|
| 912 |
subdirectory contents follow the top-level directory of the Dired |
|---|
| 913 |
buffer, just as they do in @samp{ls -lR} output. |
|---|
| 914 |
|
|---|
| 915 |
If the subdirectory's contents are already present in the buffer, the |
|---|
| 916 |
@kbd{i} command just moves to it. |
|---|
| 917 |
|
|---|
| 918 |
In either case, @kbd{i} sets the Emacs mark before moving, so @kbd{C-u |
|---|
| 919 |
C-@key{SPC}} takes you back to the old position in the buffer (the line |
|---|
| 920 |
describing that subdirectory). |
|---|
| 921 |
|
|---|
| 922 |
Use the @kbd{l} command (@code{dired-do-redisplay}) to update the |
|---|
| 923 |
subdirectory's contents. Use @kbd{C-u k} on the subdirectory header |
|---|
| 924 |
line to delete the subdirectory. @xref{Dired Updating}. |
|---|
| 925 |
|
|---|
| 926 |
|
|---|
| 927 |
|
|---|
| 928 |
|
|---|
| 929 |
@ifnottex |
|---|
| 930 |
@include dired-xtra.texi |
|---|
| 931 |
@end ifnottex |
|---|
| 932 |
|
|---|
| 933 |
@node Subdirectory Motion |
|---|
| 934 |
@section Moving Over Subdirectories |
|---|
| 935 |
|
|---|
| 936 |
When a Dired buffer lists subdirectories, you can use the page motion |
|---|
| 937 |
commands @kbd{C-x [} and @kbd{C-x ]} to move by entire directories |
|---|
| 938 |
(@pxref{Pages}). |
|---|
| 939 |
|
|---|
| 940 |
@cindex header line (Dired) |
|---|
| 941 |
@cindex directory header lines |
|---|
| 942 |
The following commands move across, up and down in the tree of |
|---|
| 943 |
directories within one Dired buffer. They move to @dfn{directory header |
|---|
| 944 |
lines}, which are the lines that give a directory's name, at the |
|---|
| 945 |
beginning of the directory's contents. |
|---|
| 946 |
|
|---|
| 947 |
@table @kbd |
|---|
| 948 |
@findex dired-next-subdir |
|---|
| 949 |
@kindex C-M-n @r{(Dired)} |
|---|
| 950 |
@item C-M-n |
|---|
| 951 |
Go to next subdirectory header line, regardless of level |
|---|
| 952 |
(@code{dired-next-subdir}). |
|---|
| 953 |
|
|---|
| 954 |
@findex dired-prev-subdir |
|---|
| 955 |
@kindex C-M-p @r{(Dired)} |
|---|
| 956 |
@item C-M-p |
|---|
| 957 |
Go to previous subdirectory header line, regardless of level |
|---|
| 958 |
(@code{dired-prev-subdir}). |
|---|
| 959 |
|
|---|
| 960 |
@findex dired-tree-up |
|---|
| 961 |
@kindex C-M-u @r{(Dired)} |
|---|
| 962 |
@item C-M-u |
|---|
| 963 |
Go up to the parent directory's header line (@code{dired-tree-up}). |
|---|
| 964 |
|
|---|
| 965 |
@findex dired-tree-down |
|---|
| 966 |
@kindex C-M-d @r{(Dired)} |
|---|
| 967 |
@item C-M-d |
|---|
| 968 |
Go down in the directory tree, to the first subdirectory's header line |
|---|
| 969 |
(@code{dired-tree-down}). |
|---|
| 970 |
|
|---|
| 971 |
@findex dired-prev-dirline |
|---|
| 972 |
@kindex < @r{(Dired)} |
|---|
| 973 |
@item < |
|---|
| 974 |
Move up to the previous directory-file line (@code{dired-prev-dirline}). |
|---|
| 975 |
These lines are the ones that describe a directory as a file in its |
|---|
| 976 |
parent directory. |
|---|
| 977 |
|
|---|
| 978 |
@findex dired-next-dirline |
|---|
| 979 |
@kindex > @r{(Dired)} |
|---|
| 980 |
@item > |
|---|
| 981 |
Move down to the next directory-file line (@code{dired-prev-dirline}). |
|---|
| 982 |
@end table |
|---|
| 983 |
|
|---|
| 984 |
@node Hiding Subdirectories |
|---|
| 985 |
@section Hiding Subdirectories |
|---|
| 986 |
|
|---|
| 987 |
@cindex hiding in Dired (Dired) |
|---|
| 988 |
@dfn{Hiding} a subdirectory means to make it invisible, except for its |
|---|
| 989 |
header line. |
|---|
| 990 |
|
|---|
| 991 |
@table @kbd |
|---|
| 992 |
@item $ |
|---|
| 993 |
@findex dired-hide-subdir |
|---|
| 994 |
@kindex $ @r{(Dired)} |
|---|
| 995 |
Hide or reveal the subdirectory that point is in, and move point to the |
|---|
| 996 |
next subdirectory (@code{dired-hide-subdir}). A numeric argument serves |
|---|
| 997 |
as a repeat count. |
|---|
| 998 |
|
|---|
| 999 |
@item M-$ |
|---|
| 1000 |
@findex dired-hide-all |
|---|
| 1001 |
@kindex M-$ @r{(Dired)} |
|---|
| 1002 |
Hide all subdirectories in this Dired buffer, leaving only their header |
|---|
| 1003 |
lines (@code{dired-hide-all}). Or, if any subdirectory is currently |
|---|
| 1004 |
hidden, make all subdirectories visible again. You can use this command |
|---|
| 1005 |
to get an overview in very deep directory trees or to move quickly to |
|---|
| 1006 |
subdirectories far away. |
|---|
| 1007 |
@end table |
|---|
| 1008 |
|
|---|
| 1009 |
Ordinary Dired commands never consider files inside a hidden |
|---|
| 1010 |
subdirectory. For example, the commands to operate on marked files |
|---|
| 1011 |
ignore files in hidden directories even if they are marked. Thus you |
|---|
| 1012 |
can use hiding to temporarily exclude subdirectories from operations |
|---|
| 1013 |
without having to remove the Dired marks on files in those |
|---|
| 1014 |
subdirectories. |
|---|
| 1015 |
|
|---|
| 1016 |
@node Dired Updating |
|---|
| 1017 |
@section Updating the Dired Buffer |
|---|
| 1018 |
@cindex updating Dired buffer |
|---|
| 1019 |
@cindex refreshing displayed files |
|---|
| 1020 |
|
|---|
| 1021 |
This section describes commands to update the Dired buffer to reflect |
|---|
| 1022 |
outside (non-Dired) changes in the directories and files, and to delete |
|---|
| 1023 |
part of the Dired buffer. |
|---|
| 1024 |
|
|---|
| 1025 |
@table @kbd |
|---|
| 1026 |
@item g |
|---|
| 1027 |
Update the entire contents of the Dired buffer (@code{revert-buffer}). |
|---|
| 1028 |
|
|---|
| 1029 |
@item l |
|---|
| 1030 |
Update the specified files (@code{dired-do-redisplay}). You specify the |
|---|
| 1031 |
files for @kbd{l} in the same way as for file operations. |
|---|
| 1032 |
|
|---|
| 1033 |
@item k |
|---|
| 1034 |
Delete the specified @emph{file lines}---not the files, just the lines |
|---|
| 1035 |
(@code{dired-do-kill-lines}). |
|---|
| 1036 |
|
|---|
| 1037 |
@item s |
|---|
| 1038 |
Toggle between alphabetical order and date/time order |
|---|
| 1039 |
(@code{dired-sort-toggle-or-edit}). |
|---|
| 1040 |
|
|---|
| 1041 |
@item C-u s @var{switches} @key{RET} |
|---|
| 1042 |
Refresh the Dired buffer using @var{switches} as |
|---|
| 1043 |
@code{dired-listing-switches}. |
|---|
| 1044 |
@end table |
|---|
| 1045 |
|
|---|
| 1046 |
@kindex g @r{(Dired)} |
|---|
| 1047 |
@findex revert-buffer @r{(Dired)} |
|---|
| 1048 |
Type @kbd{g} (@code{revert-buffer}) to update the contents of the |
|---|
| 1049 |
Dired buffer, based on changes in the files and directories listed. |
|---|
| 1050 |
This preserves all marks except for those on files that have vanished. |
|---|
| 1051 |
Hidden subdirectories are updated but remain hidden. |
|---|
| 1052 |
|
|---|
| 1053 |
@kindex l @r{(Dired)} |
|---|
| 1054 |
@findex dired-do-redisplay |
|---|
| 1055 |
To update only some of the files, type @kbd{l} |
|---|
| 1056 |
(@code{dired-do-redisplay}). Like the Dired file-operating commands, |
|---|
| 1057 |
this command operates on the next @var{n} files (or previous |
|---|
| 1058 |
@minus{}@var{n} files), or on the marked files if any, or on the |
|---|
| 1059 |
current file. Updating the files means reading their current status, |
|---|
| 1060 |
then updating their lines in the buffer to indicate that status. |
|---|
| 1061 |
|
|---|
| 1062 |
If you use @kbd{l} on a subdirectory header line, it updates the |
|---|
| 1063 |
contents of the corresponding subdirectory. |
|---|
| 1064 |
|
|---|
| 1065 |
@kindex k @r{(Dired)} |
|---|
| 1066 |
@findex dired-do-kill-lines |
|---|
| 1067 |
To delete the specified @emph{file lines} from the buffer---not |
|---|
| 1068 |
delete the files---type @kbd{k} (@code{dired-do-kill-lines}). Like |
|---|
| 1069 |
the file-operating commands, this command operates on the next @var{n} |
|---|
| 1070 |
files, or on the marked files if any; but it does not operate on the |
|---|
| 1071 |
current file as a last resort. |
|---|
| 1072 |
|
|---|
| 1073 |
If you use @kbd{k} with a numeric prefix argument to kill the line |
|---|
| 1074 |
for a file that is a directory, which you have inserted in the Dired |
|---|
| 1075 |
buffer as a subdirectory, it deletes that subdirectory from the buffer |
|---|
| 1076 |
as well. Typing @kbd{C-u k} on the header line for a subdirectory |
|---|
| 1077 |
also deletes the subdirectory from the Dired buffer. |
|---|
| 1078 |
|
|---|
| 1079 |
The @kbd{g} command brings back any individual lines that you have |
|---|
| 1080 |
killed in this way, but not subdirectories---you must use @kbd{i} to |
|---|
| 1081 |
reinsert a subdirectory. |
|---|
| 1082 |
|
|---|
| 1083 |
@cindex Dired sorting |
|---|
| 1084 |
@cindex sorting Dired buffer |
|---|
| 1085 |
@kindex s @r{(Dired)} |
|---|
| 1086 |
@findex dired-sort-toggle-or-edit |
|---|
| 1087 |
The files in a Dired buffers are normally listed in alphabetical order |
|---|
| 1088 |
by file names. Alternatively Dired can sort them by date/time. The |
|---|
| 1089 |
Dired command @kbd{s} (@code{dired-sort-toggle-or-edit}) switches |
|---|
| 1090 |
between these two sorting modes. The mode line in a Dired buffer |
|---|
| 1091 |
indicates which way it is currently sorted---by name, or by date. |
|---|
| 1092 |
|
|---|
| 1093 |
@kbd{C-u s @var{switches} @key{RET}} lets you specify a new value for |
|---|
| 1094 |
@code{dired-listing-switches}. |
|---|
| 1095 |
|
|---|
| 1096 |
@node Dired and Find |
|---|
| 1097 |
@section Dired and @code{find} |
|---|
| 1098 |
@cindex @code{find} and Dired |
|---|
| 1099 |
|
|---|
| 1100 |
You can select a set of files for display in a Dired buffer more |
|---|
| 1101 |
flexibly by using the @code{find} utility to choose the files. |
|---|
| 1102 |
|
|---|
| 1103 |
@findex find-name-dired |
|---|
| 1104 |
To search for files with names matching a wildcard pattern use |
|---|
| 1105 |
@kbd{M-x find-name-dired}. It reads arguments @var{directory} and |
|---|
| 1106 |
@var{pattern}, and chooses all the files in @var{directory} or its |
|---|
| 1107 |
subdirectories whose individual names match @var{pattern}. |
|---|
| 1108 |
|
|---|
| 1109 |
The files thus chosen are displayed in a Dired buffer, in which the |
|---|
| 1110 |
ordinary Dired commands are available. |
|---|
| 1111 |
|
|---|
| 1112 |
@findex find-grep-dired |
|---|
| 1113 |
If you want to test the contents of files, rather than their names, |
|---|
| 1114 |
use @kbd{M-x find-grep-dired}. This command reads two minibuffer |
|---|
| 1115 |
arguments, @var{directory} and @var{regexp}; it chooses all the files in |
|---|
| 1116 |
@var{directory} or its subdirectories that contain a match for |
|---|
| 1117 |
@var{regexp}. It works by running the programs @code{find} and |
|---|
| 1118 |
@code{grep}. See also @kbd{M-x grep-find}, in @ref{Grep Searching}. |
|---|
| 1119 |
Remember to write the regular expression for @code{grep}, not for Emacs. |
|---|
| 1120 |
(An alternative method of showing files whose contents match a given |
|---|
| 1121 |
regexp is the @kbd{% g @var{regexp}} command, see @ref{Marks vs Flags}.) |
|---|
| 1122 |
|
|---|
| 1123 |
@findex find-dired |
|---|
| 1124 |
The most general command in this series is @kbd{M-x find-dired}, which |
|---|
| 1125 |
lets you specify any condition that @code{find} can test. It takes two |
|---|
| 1126 |
minibuffer arguments, @var{directory} and @var{find-args}; it runs |
|---|
| 1127 |
@code{find} in @var{directory}, passing @var{find-args} to tell |
|---|
| 1128 |
@code{find} what condition to test. To use this command, you need to |
|---|
| 1129 |
know how to use @code{find}. |
|---|
| 1130 |
|
|---|
| 1131 |
@vindex find-ls-option |
|---|
| 1132 |
The format of listing produced by these commands is controlled by the |
|---|
| 1133 |
variable @code{find-ls-option}, whose default value specifies using |
|---|
| 1134 |
options @samp{-ld} for @code{ls}. If your listings are corrupted, you |
|---|
| 1135 |
may need to change the value of this variable. |
|---|
| 1136 |
|
|---|
| 1137 |
@findex locate |
|---|
| 1138 |
@findex locate-with-filter |
|---|
| 1139 |
@cindex file database (locate) |
|---|
| 1140 |
@vindex locate-command |
|---|
| 1141 |
The command @kbd{M-x locate} provides a similar interface to the |
|---|
| 1142 |
@code{locate} program. @kbd{M-x locate-with-filter} is similar, but |
|---|
| 1143 |
keeps only files whose names match a given regular expression. |
|---|
| 1144 |
|
|---|
| 1145 |
These buffers don't work entirely like ordinary Dired buffers: file |
|---|
| 1146 |
operations work, but do not always automatically update the buffer. |
|---|
| 1147 |
Reverting the buffer with @kbd{g} deletes all inserted subdirectories, |
|---|
| 1148 |
and erases all flags and marks. |
|---|
| 1149 |
|
|---|
| 1150 |
@node Wdired |
|---|
| 1151 |
@section Editing the Dired Buffer |
|---|
| 1152 |
|
|---|
| 1153 |
@cindex wdired mode |
|---|
| 1154 |
@findex wdired-change-to-wdired-mode |
|---|
| 1155 |
Wdired is a special mode that allows you to perform file operations |
|---|
| 1156 |
by editing the Dired buffer directly (the ``W'' in ``Wdired'' stands |
|---|
| 1157 |
for ``writable.'') To enter Wdired mode, type @kbd{M-x |
|---|
| 1158 |
wdired-change-to-wdired-mode} while in a Dired buffer. Alternatively, |
|---|
| 1159 |
use @samp{Edit File Names} in the @samp{Immediate} menu bar menu. |
|---|
| 1160 |
|
|---|
| 1161 |
@findex wdired-finish-edit |
|---|
| 1162 |
While in Wdired mode, you can rename files by editing the file names |
|---|
| 1163 |
displayed in the Dired buffer. All the ordinary Emacs editing |
|---|
| 1164 |
commands, including rectangle operations and @code{query-replace}, are |
|---|
| 1165 |
available for this. Once you are done editing, type @kbd{C-c C-c} |
|---|
| 1166 |
(@code{wdired-finish-edit}). This applies your changes and switches |
|---|
| 1167 |
back to ordinary Dired mode. |
|---|
| 1168 |
|
|---|
| 1169 |
Apart from simply renaming files, you can move a file to another |
|---|
| 1170 |
directory by typing in the new file name (either absolute or |
|---|
| 1171 |
relative). To mark a file for deletion, delete the entire file name. |
|---|
| 1172 |
To change the target of a symbolic link, edit the link target name |
|---|
| 1173 |
which appears next to the link name. |
|---|
| 1174 |
|
|---|
| 1175 |
The rest of the text in the buffer, such as the file sizes and |
|---|
| 1176 |
modification dates, is marked read-only, so you can't edit it. |
|---|
| 1177 |
However, if you set @code{wdired-allow-to-change-permissions} to |
|---|
| 1178 |
@code{t}, you can edit the file permissions. For example, you can |
|---|
| 1179 |
change @samp{-rw-r--r--} to @samp{-rw-rw-rw-} to make a file |
|---|
| 1180 |
world-writable. These changes also take effect when you type @kbd{C-c |
|---|
| 1181 |
C-c}. |
|---|
| 1182 |
|
|---|
| 1183 |
@node Image-Dired |
|---|
| 1184 |
@section Viewing Image Thumbnails in Dired |
|---|
| 1185 |
@cindex image-dired mode |
|---|
| 1186 |
@cindex image-dired |
|---|
| 1187 |
|
|---|
| 1188 |
Image-Dired is a facility for browsing image files. It provides viewing |
|---|
| 1189 |
the images either as thumbnails or in full size, either inside Emacs |
|---|
| 1190 |
or through an external viewer. |
|---|
| 1191 |
|
|---|
| 1192 |
@kindex C-t d @r{(Image-Dired)} |
|---|
| 1193 |
@findex image-dired-display-thumbs |
|---|
| 1194 |
To enter Image-Dired, mark the image files you want to look at in |
|---|
| 1195 |
the Dired buffer, using @kbd{m} as usual. Then type @kbd{C-t d} |
|---|
| 1196 |
(@code{image-dired-display-thumbs}). This creates and switches to a |
|---|
| 1197 |
buffer containing image-dired, corresponding to the marked files. |
|---|
| 1198 |
|
|---|
| 1199 |
You can also enter Image-Dired directly by typing @kbd{M-x |
|---|
| 1200 |
image-dired}. This prompts for a directory; specify one that has |
|---|
| 1201 |
image files. This creates thumbnails for all the images in that |
|---|
| 1202 |
directory, and displays them all in the ``thumbnail buffer.'' This |
|---|
| 1203 |
takes a long time if the directory contains many image files, and it |
|---|
| 1204 |
asks for confirmation if the number of image files exceeds |
|---|
| 1205 |
@code{image-dired-show-all-from-dir-max-files}. |
|---|
| 1206 |
|
|---|
| 1207 |
With point in the thumbnail buffer, you can type @kbd{RET} |
|---|
| 1208 |
(@code{image-dired-display-thumbnail-original-image}) to display a |
|---|
| 1209 |
sized version of it in another window. This sizes the image to fit |
|---|
| 1210 |
the window. Use the arrow keys to move around in the buffer. For |
|---|
| 1211 |
easy browsing, use @kbd{SPC} |
|---|
| 1212 |
(@code{image-dired-display-next-thumbnail-original}) to advance and |
|---|
| 1213 |
display the next image. Typing @kbd{DEL} |
|---|
| 1214 |
(@code{image-dired-display-previous-thumbnail-original}) backs up to |
|---|
| 1215 |
the previous thumbnail and displays that instead. |
|---|
| 1216 |
|
|---|
| 1217 |
@vindex image-dired-external-viewer |
|---|
| 1218 |
To view and the image in its original size, either provide a prefix |
|---|
| 1219 |
argument (@kbd{C-u}) before pressing @kbd{RET}, or type |
|---|
| 1220 |
@kbd{C-@key{RET}} (@code{image-dired-thumbnail-display-external}) to |
|---|
| 1221 |
display the image in an external viewer. You must first configure |
|---|
| 1222 |
@code{image-dired-external-viewer}. |
|---|
| 1223 |
|
|---|
| 1224 |
You can delete images through Image-Dired also. Type @kbd{d} |
|---|
| 1225 |
(@code{image-dired-flag-thumb-original-file}) to flag the image file |
|---|
| 1226 |
for deletion in the Dired buffer. You can also delete the thumbnail |
|---|
| 1227 |
image from the thumbnail buffer with @kbd{C-d} |
|---|
| 1228 |
(@code{image-dired-delete-char}). |
|---|
|
|---|