我有一批格式相同的文件说bmp
,文件名是0.bmp
1.bmp
...... 99.bmp
,我想更改文件名,比如,0.bmp
等等。emacs可以这样做吗?我在 Windows 下使用 emacs。99.bmp
1.bmp
98.bmp
dired-mode
问问题
118 次
3 回答
7
您可以使用M-x wdired-change-to-wdired-mode使 dired 缓冲区可编辑。然后一个简单的带有计数器的键盘宏,从 dired 缓冲区的末尾开始,应该可以为您解决问题。
如果您不想使用宏,则替代方法是:
M-x replace-regexp
Replace regexp: ^[0-9]+
Replace regexp with \,(- 99 \#&)
于 2012-12-11T09:52:03.700 回答
2
可能是一个快速的肮脏答案,而不是通用的:
第一:C-x C-q在dired-mode
;
第二:M-:yank 和RET代码段:
(progn
(beginning-of-buffer)
(while (re-search-forward "\\([0-9]+\\).bmp" nil t)
(replace-match
(format "%d.bmp" (- 99 (string-to-number (match-string 1))))
nil
nil)))
第三:C-c C-c保存修改,大功告成。
于 2012-12-11T10:41:10.487 回答
1
我不确定,但您可以在缓冲区dired-mode
中执行一个简单的脚本。*scratch*
当您用不同的名称替换现有文件名时,我建议您首先重命名所有文件 ant 然后从这些名称开始:
(progn
(dotimes (i 100)
(let ((file-name (concat (number-to-string i) ".bmp")))
(rename-file file-name (concat "old" file-name))))
(dotimes (i 100)
(let ((file-name-old (concat "old" (number-to-string i) ".bmp"))
(file-name-new (concat (number-to-string (- 99 i)) ".bmp")))
(rename-file file-name-old file-name-new))))
如果您将其复制到*scratch*
缓冲区,并通过您 push 的表达式C-x C-e,该代码将为您完成。
于 2012-12-11T09:56:06.640 回答