随笔 - 272  文章 - 0  评论 - 283  阅读 - 142万

用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 ~

运行效果如下:

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

posted on   Mike_Zhang  阅读(4081)  评论(5编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2012年8月 >
29 30 31 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 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示