前言
最近把博客換了皮膚,今天早上起來就開始搗鼓文件命名問題。hexo的文章基本都是生成在_post文件夾下,若文章多了以后就不好管理,所就打算以【日期+文章標題】為文件名:
更改前:
更改后:
文章一共90篇,作為程序員不可能一個個的去改,得用工具幫我去完成,那就是用程序幫我完成這么機械的任務。
完成這項任務的前提條件是:文章的時間和文章的標題
題目很簡單,文件名就是,時間呢?幸好hexo在生成文章的時候,文件內容里面已經有時間:
title: Nodjs重命名文件date: 2017-03-05 08:57:47categories: - nodejs - javascripttags:
所以接下來的事情就明確了:
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`) })}
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。
新聞熱點
疑難解答