需求 如果不在时间线写文章,通过docs进行分类处理的时候,子目录里面的目录不好处理,通过脚本扫描处理目录
实现 准备两个脚本,一个脚本遍历,一个脚本进行执行更新
update.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #! /bin/bash rootdir=`pwd ` for dir in `find . -type d|grep -v "assets\|file" `do echo "正在更新: $dir " cd $dir mdnum=`find ./ -name "*.md" |grep -v index.md|wc -l` if [ $mdnum != 0 ];then sh $rootdir /generatemenu.sh > ./index.md fi cd $rootdir done
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 34 35 36 37 38 39 40 41 42 43 44 #! /bin/sh mydate=`date "+%Y-%m-%d %H:%M:%S" ` mydir=`pwd | awk -F "/" '{print $NF}' ` p1=$p1 "---\n" p1=$p1 "title: $mydir \n" p1=$p1 "date: $mydate \n" p1=$p1 "description: $mydir 的文章\n" p1=$p1 "---\n" p1=$p1 "\n" for mdfile in `find . -name "*.md" |grep -v index.md|sort `do mdfilename=`echo $mdfile |rev|cut -d / -f 1 |rev` path=`echo $mdfile |sed 's/.\{2\}//' ` pdir=`echo $path |cut -d / -f 1` p2dir=`echo $path |cut -d / -f 2` if [[ $pdir =~ "md" ]] ;then : else if [[ $p1 =~ "## $pdir " ]];then : else p1=$p1 "## " $pdir "\n" fi fi if [[ "$p2dir " =~ ".md" ]];then : else if [[ $p1 =~ "## $p2dir " ]];then : else p1=$p1 "### " $p2dir "\n" fi fi p1=$p1 "* [${mdfilename%???} ](${path%???} )\n" done echo $p1
执行update.sh就可以遍历的更新子目录的index了
文章添加头部标记 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 for file in `find . -name "*.md" |grep -v index.md`do mydate=`date "+%Y-%m-%d %H:%M:%S" ` echo $file ;docname=`echo $file |rev|cut -d / -f 1 |rev|cut -d "." -f 1` titlenum=`cat $file |head -n 5|grep title|wc -l` echo $titlenum if [ $titlenum -eq 0 ];then echo "需要处理" sed -i '' '1 i \ --- ' $file sed -i '' '1 i \ description: $docname ' $file sed -i '' '1 i \ date: $mydate ' $file sed -i '' '1 i \ echo title: $docname ' $file sed -i '' '1 i \ --- ' $file fi done
变量没更新的问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 for file in `find . -name "*.md" |grep -v index.md`do mydate=`date "+%Y-%m-%d %H:%M:%S" ` echo $file ;docname=`echo $file |rev|cut -d / -f 1 |rev|cut -d "." -f 1` titlenum=`cat $file |head -n 5|grep title|wc -l` echo $titlenum if [ $titlenum -eq 1 ];then echo "需要处理" sed -i "" "s/^description:.*/description: $docname /g" $file sed -i "" "s/^date:.*/date: $mydate /g" $file sed -i "" "s/^title:.*/title: $docname /g" $file fi done
再跑一遍即可