Node.js批量重命名Hexo博客文章文件

作者:栖木

时间:2026-10-21

浏览:586

本文介绍如何使用Node.js批量重命名Hexo博客文章文件。通过读取指定目录下的Markdown文件,解析文件头部包含的日期和标题信息,拼接生成新文件名,并利用fs模块完成文件重命名操作,解决文章数量多时管理困难的问题。

文章目录

前言

Node.js批量重命名Hexo博客文章文件

近期更换了博客主题,今早开始处理文件命名规范。Hexo生成的文章默认存放在_post文件夹中,随着文章数量增加,管理变得不便。因此,计划将文件名统一格式化为“日期+文章标题”。

更改前:

Node.js批量重命名Hexo博客文章文件

更改后:

Node.js批量重命名Hexo博客文章文件

现有文章共90篇,人工逐一修改效率低下,因此编写程序来自动化完成这一机械性任务。

实现该任务的关键在于获取文章的时间戳和标题信息。

文件名由这两部分组成。Hexo在生成文章时,文件内容中已包含时间信息:


title: Nodjs重命名文件
date: 2017-03-05 08:57:47
categories:
 - nodejs
 - javascript
tags:

因此,处理流程明确如下:

1. 读取文章内容

2. 提取时间

3. 拼接时间和文章标题

代码整体思路:

1. 读取指定目录下的文件内容

2. 按行分割内容,提取所需信息

3. 拼接时间+标题

在整行读取内容遇到一些问题,查了文档nodejs好像有 https://nodejs.org/api/readline.html ,但我没有用直接用 了一个偷懒的方法分割内容:


data.toString().split('\n')

这样便得到了一个以换行符\n为分隔符的数组。

涉及的方法:


readdirSync readFile rename

以下是具体代码实现:


/*
* @Author: zhuxy
* @Date: 2017-03-05 08:05:39
* @Last Modified by: zhuxy
* @Last Modified time: 2017-03-05 09:23:35
*/
const fs = require('fs');
let path = 'your/path';
let files = fs.readdirSync(path);
for(let i = 0; i < files.length; i++){
 fs.readFile(`${path}/${files[i]}`,function(err,data){
  // console.log(data.toString().split('\n')[0].split(' ')[1])
  // console.log(data.toString().split('\n')[1].split(' ')[1])
  let newname = data.toString().split('\n')[1].split(' ')[1] + '-' + data.toString().split('\n')[0].split(' ')[1].replace(/['|']/g,'')
  fs.rename(`${path}/${files[i]}`,`${path}/${newname}.md`)
 })
}

总结

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对本站的支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章