zoukankan      html  css  js  c++  java
  • 用bash脚本进行代码行数统计

    获取单个文件行数

    文件:test1.sh

    行数:20

    方法一

    awk '{print NR}' test1.sh|tail -n1

    如图所示:

    方法二

    awk 'END{print NR}' test1.sh

    如图所示:

    方法三

    grep -n "" test1.sh|awk -F: '{print '}|tail -n1

    如图所示:

    方法四

    sed -n '$=' test1.sh

    如图所示:

    方法五

    wc -l test1.sh

    如图所示:

    方法六

    #cat test1.sh |wc -l

    如图所示:

    获取特定目录所有文件的行数

    代码如下:

    #!/bin/bash
    
    filesCount=0
    linesCount=0
    function funCount()
    {
        for file in ` ls $1 `
        do
            if [ -d $1"/"$file ];then
                funCount $1"/"$file
            else
                declare -i fileLines
                fileLines=`sed -n '$=' $1"/"$file`
                let linesCount=$linesCount+$fileLines
                let filesCount=$filesCount+1
            fi
        done
    }
    
    if [ $# -gt 0 ];then
        for m_dir in $@
        do
            funCount $m_dir
        done
    else
        funCount "."
    fi
    echo "filesCount = $filesCount"
    echo "linesCount = $linesCount"

    使用方法:

    1、针对本目录

    ./count.sh

    2、统计多个目录

    ./count.sh /tmp ~

    运行效果如下:

    获取特定目录特定扩展名文件的行数

    代码如下:

    #!/bin/bash
    
    extens=(".c" ".cpp" ".h" ".hpp")
    
    filesCount=0
    linesCount=0
    function funCount()
    {
        for file in ` ls $1 `
        do
            if [ -d $1"/"$file ];then
                funCount $1"/"$file
            else
                fileName=$1"/"$file
                
                EXTENSION="."${fileName##*.}
                echo "fileName = $fileName  Extension = $EXTENSION"
    
                if [[ "${extens[@]/$EXTENSION/}" != "${extens[@]}" ]];then
                    declare -i fileLines
                    fileLines=`sed -n '$=' $fileName`
                    echo $fileName" : "$fileLines
                    let linesCount=$linesCount+$fileLines
                    let filesCount=$filesCount+1
                fi
            fi
        done
    }
    
    if [ $# -gt 0 ];then
        for m_dir in $@
        do
            funCount $m_dir
        done
    else
        funCount "."
    fi
    echo "filesCount = $filesCount"
    echo "linesCount = $linesCount"

     使用方法:

    1、针对本目录

    ./count.sh

    2、统计多个目录

    ./count.sh /tmp ~

    运行效果如下:

    好,就这些了,希望对你有帮助。

  • E-Mail : Mike_Zhang@live.com
  • 转载请注明出处,谢谢!
查看全文
  • 相关阅读:
    #Leetcode# 541. Reverse String II
    PAT 甲级 1030 Travel Plan
    PAT 甲级 1029 Median
    bzoj 2002 [Hnoi2010]Bounce 弹飞绵羊
    jzoj 4243. 【五校联考6day1】c
    2019.02.23【NOIP提高组】模拟 A 组 总结
    【GDOI2013模拟1】病毒传播
    【GDOI2013模拟1】最短路
    【GDOI2013模拟1】删数字
    数列分块入门 6 总结
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/linesCountBash20120822.html
  • Copyright © 2011-2022 走看看