shell 配合tree使用,生成带有文件头部注释的目录树

胡少龙

! /bin/bash

生成项目的目录结构

必须显示完整的目录,文件头部内容才能写入到指定的文件中

配合tree命令使用,可以生成文件树,通过tree生成一个文档,读取这个文档中的目录内容,生成README文档

tree -f > README.md
README="./doc/README.md" # 写入文件

获取目录下所有的文件

function ergodic ()
{
    # $1 表示函数的第一个参数
    # ##*./ 表示从左边开始删除最后(最右边)一个 ./ 号及左边的所有字符
    file_path=${1##*./} # 删除文件路径左边的所有字符
    file="$path/$file_path" # 拼接路径
    left_name=${1%'./'*} # 获取字符串./左边的内容
    right_name=${1##*'/'} # 获取字符串/右边的内容
    name="$left_name$right_name" # 拼接字符串
    # 判断文件
    if test -f $file
    then
        # 判断文件存在并且文件大小大于0
        if [ -s $file ]
        then
            # 判断文件的后缀名
            if [[ "${file##*.}" = "js" || "${file##*.}" = "jsx" ]]
            then
                # 读取文件第二行的内容
                title=$(awk "NR==2" $file)
                # ${title##''} 读取*(星号)后面的内容
                # 判断title是否包含 *
                if [[ $title =~ '*' ]]
                then
                    echo "$name" "${title##''}" >> $README # 写入文件
                else
                    echo "$name" "该文件没有头部注释或格式不对" >> $README # 写入文件
                fi
            # 样式
            elif [ "${file##*.}" = "less" ]
            then
                echo "$name" '样式' >> $README # 写入文件
            # 静态文件
            elif [[ "${file##*.}" = "jpg" || "${file##*.}" = "png" ]]
            then
                echo "$name" '静态文件' >> $README # 写入文件
            # json文件
            elif [ "${file##*.}" = "json" ]
            then
                echo "$name" 'json文件' >> $README # 写入文件
            else
                echo "$name" >> $README # 写入文件
            fi
        # 文件为空时
        else
            echo "$name" '该文件为空,请及时查看' >> $README # 写入文件
        fi
    # 判断目录
    elif test -d $file
    then
        echo "$name" >> $README # 写入文件
    # 判断文件是否存在
    elif [[ $file =~ 'directories' || $file =~ 'files' ]]
    then
        echo "$name" >> $README # 写入文件
    else
        # echo "$name" >> $README # 写入文件
        echo "$name" '该文件不存在,请及时更新目录模版文件' >> $README # 写入文件
    fi
}

读取目录模版

function read_files () {
    path="./src/routes" # 当前目录
    template="$path/README.md" # 目录模版
    echo '' > $README # 清空文件
    # while 读取文件每一行的内容
    while read line
    do
        ergodic "$line" # 函数调用
    done < $template
}
read_files
目录模版


生成的效果图

阅读 1.9k
50 声望
7 粉丝
0 条评论
你知道吗?

50 声望
7 粉丝
文章目录
宣传栏