Emacs Dired rename many files
Asked Answered
J

3

39

How to rename from:

VAR1_1F_text.txt
VAR2_1F_text.txt
VAR3_2F_text.txt

to

1F_VAR1_text.txt
1F_VAR2_text.txt
2F_VAR3_text.txt

How to switch parts of filenames?

Josejosee answered 8/4, 2013 at 14:29 Comment(0)
T
79

This can easily be done using dired:

  1. Enter a dired view of your directory

  2. Switch to writable dired mode (wdired-change-to-wdired-mode): C-xC-q

  3. Edit the file names listing as if it were a normal buffer (for example using a keyboard macro or a rectangular selection or query-replace). Here is a regexp-based solution:

    C-M-%\(VAR.\)_\(..\)RET\2_\1RET

  4. Finish editing (wdired-finish-edit): C-xC-s or C-cC-c

You're done!

Thermoelectrometer answered 8/4, 2013 at 15:4 Comment(5)
You can also do it without WDired, just mark files you need with m (or * s to mark all files in buffer) and run % R to rename with regexp.Chloras
The wdired method is a bit easier to work with b/c if you have something like run-foo.sh, foo.conf and init-foo-script and you wanted to replace foo with bar, it is simpler to just do a replace in the buffer than concoct a regex that matches the correct value and properly replaces it. That said, in the described scenario, % R does seem like it'd work just fine.Fancie
Is there nothing emacs can't do?Paramagnetic
How could I possibly have missed WDired for 20 years? Such a time saver! Thank you, @FrancescoXylophone
Just if anyone uses spacemacs you can enter the wdired-change-to-wdired-mode using <leader> b w as in (buffer write) my <leader> is space for Evil mode.Tinder
E
4

You could also use Magnar Sveen's multiple-cursors from here, github link.

Switch to writable dired, select the files you want to rename, M-x mc/edit-lines. This should create multiple cursor each with its own kill history.

Eustache answered 30/12, 2014 at 21:2 Comment(0)
F
1

This technique, which I discovered on the internet, is highly beneficial. It enables you to perform various actions with emacs macros, including editing text files.

Basically what you see as text file save with C-x C-s.

Alt+x dired to go to the directory.
Alt+x dired-toggle-read-only 【Ctrl+x Ctrl+q】.
Then, just edit the file names. (You can use Alt+x query-replace or Alt+x query-replace-regexp [see Emacs: Find Replace in Current File] or rectangle commands. [see Emacs: Edit Column Text, Rectangle Commands])
When done, wdired-finish-edit 【Ctrl+c Ctrl+c】 to commit the changes.

To abort, Alt+x w dired-abort-changes 【Ctrl+c Ctrl+k】

Reference: http://xahlee.info/emacs/emacs/rename_file_pattern.html

Fulgurite answered 4/7, 2023 at 14:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.