【求助】批量文件重命名

大佬好,请教个问题,大约有100多个文件名如下格式的文件:

英语20201010.mp4
自动化20201011.mp4
……

现在想把上述文件名批量重命名为下列格式:

20201010英语.mp4
20201011自动化.mp4

不胜感激!

在Emacs里打开这个目录,然后M-x dired-toggle-read-only。然后用你喜欢的文本编辑方式编辑成你想要的样子,然后C-x C-s。如果不熟悉Emacs的正则表达式的话,可以M-x query-replace-regexp,然后输入^\([^0-9]*\)\([0-9]*\)\.mp4,再输入\2\1.mp4

5 个赞

把文件名复制出来,用emacs编辑一个脚本,然后执行

操作前一定记得备份。

如果你是Windows用户,用totalcmd吧,批量改名很简单,不容易错

1 个赞

dired 里面 C-x C-q 可以进入 wdired 模式,然后查找替换。之后 C-c C-c .

我不知道为啥我这套按键和圣佬的不一样,我这套也是默认的。。。。

2 个赞

C-c C-c也可以。C-x C-s是保存,对于编辑一些东西之后是非常intuitive的键绑定。C-c C-c一般是提交一个什么东西。

想比较爽的实现的话,我建议是要不用powertoys要不用wdired,用点正则.

首选total commander,或者wdired

费了不少功夫,终于在dired模式下批量更改了文件名!谢谢各位的帮助!

只要懂2楼写的基本正则,方法就很多了。

我常用命令行 rename,就是个批处理文件名的 sed 型工具,然后拷入二楼的正则(稍修正符合bash下的特殊字符输入)。简单例子,把所有mp4文件名的abc都改成123,就用rename ‘s/abc/123/‘ *.mp4。类sed,正则为基础,各种骚操作取决于你对正则的深入度。它是我最常用的命令行工具之一了。

C-c C-civy-occur 提交的标准绑定,这个dired中的操作也是基于 ivy-occur 的;这里由于可视为“单文件”操作,所以也给绑了 C-x C-s 产生同样效果。

参考文献:(abo-abo 的博客,那里有大量好东西啊)

  1. Save Ivy file completions to Dired · (or emacs
  2. New feature in Ivy - ivy-occur · (or emacs
  3. My "refactoring" workflow · (or emacs

dired 有自带的 wdired,我现在没有在用 ivy 了,用的 selectrum,越来越多的工具都回到了 emacs 自带的。

是有些这样的感觉,自带的已经能够满足绝大部分需求!

给第一次正则在Dired中批量修改文件名的筒子们避个坑(我掉坑里起码1h):

注意你们开了all-the-icons的Dired中,这些图标本质也是字符哈,万一你的正则匹配到这些,你就会得到譬如"read-only”的bug报错。简直怀疑人生,明明我在Dired可编辑模式呀,这就是icons的锅。正则避开这些icons就好了,或者关了。

没错,我就是掉在2楼和all-the-icons联合挖的坑里了 :rofl: (还是用这个例子给人布道的时候,尴尬的令人抠脚)

2 个赞