4

我有一批格式相同的文件说bmp,文件名是0.bmp 1.bmp...... 99.bmp,我想更改文件名,比如,0.bmp等等。emacs可以这样做吗?我在 Windows 下使用 emacs。99.bmp1.bmp98.bmpdired-mode

4

3 回答 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-qdired-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 回答