Hexo博客批量修改分类
目录
hexo博客批量修改分类
背景
建了博客一段时间,感觉原来的分类名不合适,想改。
文章很多,一个个点开改吗?
当然不,因为懒
需求分析
需要实现两个部分:
- 遍历目录树下的所有文章文件。
- 对给定的文章文件,将YAML头中的categories字段的值更改。
下面思考怎么实现。
第一部分:遍历
这个简单。直接cmd脚本,或者写程序直接递归遍历。
第二部分:处理文件
思路1:c++程序实现
结论:复杂度难以接受。
原因:windows下编译的exe程序默认以ANSI编码读取、处理文件,但是博客文章全部是UTF-8编码,写程序支持UTF-8太麻烦。
好吧还是因为懒
思路2:在linux虚拟机下c++程序实现
不就是编码嘛,换成linux就没问题了。
思路3:使用shell 的sed命令
用法示例
|
|
但是!!虽然cmd中遍历只要for /R就能轻松实现,shell实现遍历超级麻烦!!
其实还是因为懒
最终方案
那么有没有互补的办法呢?
安装gitforwindows的时候也安装了bash,可以在windows下调用shell命令。
所以可以用cmd来实现遍历,然后调用bash执行sed命令。
具体实现
step1
备份!!备份!!备份!!
step2
在_posts文件夹下建立replace.sh
|
|
其中$1表示传入的第一个参数,方便后面调用。
step3
在_posts文件夹下建立批处理文件run.bat:
|
|
step4
在_posts目录下命令行运行run.bat。
!前方高能警报!
然后bash的窗口就会不停地弹出来又不停地关闭,CPU占用瞬间飙升到100%,风扇呼啦啦的转啊 [捂脸哭泣]这种状况最终持续到所有文件修改完成为止,和病毒十分相似……
不过好在还是解决了问题的。
”不管黑猫白猫,能抓住老鼠就是好猫。“
——邓小平
反思
如果想要更为友善的视觉效果和更低的资源占用,可以尝试加点延时什么的。
更新:更好的做法
前面发现主要的效率开销其实是不断地新建和销毁bash窗口所致,那么其实只要将所有shell命令输出到一个.sh再调用就可以避免:
|
|
实测效率确实提高了不少。