换用 Hexo 之后发现 _post 目录里面乱乱的,比如从 WordPress 中导入的中文标题文章的文件名会变成乱乱的字符串,看着很难受。所以搞了个改名的脚本来重命名文件。
  重命名之后的格式为PO文日期.文章标题.md,如果文件内有注明urlname的话就是PO文日期.文章标题.urlname.md

  还有一件事很重要,就是**`_config.yml` 里面 `permalink:` 的 `:title` 指的是文件名,不是文章标题**。
rename.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash

#保存系统默认的 IFS
SAVEIFS=$IFS

#更改 IFS 为换行(用于处理文件名含有空格的文件
IFS=$'\n'

for filename in *.md; do
#标题(不想替换空格的话就删除“s/ /_/g”。
title=$(grep "title: " $filename | head -1 | sed -e 's/title: //g; s#/##g;s/ /_/g')
#发文日期
date=$(grep "date: " $filename | awk 'NR==1{printf $2}' )
#urlname
link=$(grep "urlname: " $filename | head -1 | sed 's/urlname: //g' )
#新文件名
if [ -z "$link" ]; then
#newname="$title.md"
newname="$date.$title.md"
else
#newname="$title.md"
#newname="$date.$title.md"
newname="$date.$title.$link.md"
fi
#过滤掉名字正确的
if [ "$filename" != "$newname" ]; then
#开始改名
echo "Rename $filename to $newname"
mv $filename $newname
fi
done

echo done!

计画通り
这样就舒服好多了。