最近要对一堆文件进行重命名操作,文件名是类似于
xxx01.img
xxx02.img
xxx03.img
...
的形式,要改成
01.img
02.img
03.img
...
第一个念头是写一个脚本搞定这件小事,伪代码大概是下面这个样子:
for-each file in all-files-in-current-dir do
.. basename = get-basename-of( file )
.. get-digital-part-of-filename( basename )
.. rename(only-digital-filename, basename)
然后我估了一下写成 bash 或 python 脚本要花的时间,写代码大概用5分钟左右,调试大概用5分钟左右,共10分钟。还有更快的方法吗,于是我想到了emacs,用emacs的按键宏完成这件事,从"写"脚本到运行完脚本,只花了不到1分钟。
我知道还有其它多得数不清的编辑器也有按键宏录制功能,但它们只是一个编辑器,仅此而已。Emacs不止是一个编辑器,它还是一个操作系统,操作系统无所不能,因此Emacs的按键宏功能也无所不能。
录制这个键盘宏只需要不到20秒的时间:
1. 进入dired模式,定位到要改名的第一个文件处
2. C-x (
3. C-SPC C-f C-f M-w R C-y .jpg CR C-n
4. C-x )
定义就完成了,要执行100次的话: C-u 100 C-x e。
宏相对于脚本的优势在于,录制宏的过程既是"写"脚本的过程,也是调试脚本的过程,并且这一切都是可视化的: 你能直接看到你的每一步操作会带来什么样的效果。
宏还有一个优点就是编写简单,只需要花几十秒就能录制出一个实用的工具,用完直接把它扔掉。既然录一个宏只需要十几秒,那为什么还要花时间给它加注释、取名子、然后归档到自己的脚本工具箱里去呢?
当然,相对于脚本键盘宏有很多缺点: 不可读、不能编辑、只能处理简单逻辑等,这有点象快餐: 不象正餐那样有营养、好吃,但能为你成倍地节约时间和精力,让你把时间精力放到更有价值地事上去。
xxx01.img
xxx02.img
xxx03.img
...
的形式,要改成
01.img
02.img
03.img
...
第一个念头是写一个脚本搞定这件小事,伪代码大概是下面这个样子:
for-each file in all-files-in-current-dir do
.. basename = get-basename-of( file )
.. get-digital-part-of-filename( basename )
.. rename(only-digital-filename, basename)
然后我估了一下写成 bash 或 python 脚本要花的时间,写代码大概用5分钟左右,调试大概用5分钟左右,共10分钟。还有更快的方法吗,于是我想到了emacs,用emacs的按键宏完成这件事,从"写"脚本到运行完脚本,只花了不到1分钟。
我知道还有其它多得数不清的编辑器也有按键宏录制功能,但它们只是一个编辑器,仅此而已。Emacs不止是一个编辑器,它还是一个操作系统,操作系统无所不能,因此Emacs的按键宏功能也无所不能。
录制这个键盘宏只需要不到20秒的时间:
1. 进入dired模式,定位到要改名的第一个文件处
2. C-x (
3. C-SPC C-f C-f M-w R C-y .jpg CR C-n
4. C-x )
定义就完成了,要执行100次的话: C-u 100 C-x e。
宏相对于脚本的优势在于,录制宏的过程既是"写"脚本的过程,也是调试脚本的过程,并且这一切都是可视化的: 你能直接看到你的每一步操作会带来什么样的效果。
宏还有一个优点就是编写简单,只需要花几十秒就能录制出一个实用的工具,用完直接把它扔掉。既然录一个宏只需要十几秒,那为什么还要花时间给它加注释、取名子、然后归档到自己的脚本工具箱里去呢?
当然,相对于脚本键盘宏有很多缺点: 不可读、不能编辑、只能处理简单逻辑等,这有点象快餐: 不象正餐那样有营养、好吃,但能为你成倍地节约时间和精力,让你把时间精力放到更有价值地事上去。