Shell脚本统计文件行数的8种方法

 更新时间:2015年03月10日 10:02:34   投稿:junjie  
这篇文章主要介绍了Shell脚本统计文件行数的8种方法,本文讲解了获取单个文件行数、获取特定目录所有文件的行数两种需求共计8种方法,需要的朋友可以参考下

获取单个文件行数

文件: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 ~

运行效果如下:

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

相关文章

  • 详解Shell 脚本中 “$” 符号的多种用法

    详解Shell 脚本中 “$” 符号的多种用法

    这篇文章主要介绍了详解Shell 脚本中 '$' 符号的多种用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • linux shell的输出效果修改方法(界面颜色)

    linux shell的输出效果修改方法(界面颜色)

    文本终端的颜色可以使用“ANSI非常规字符序列”来生成,有时候想个性化输出,就可以参考下面的方法
    2013-01-01
  • Shell用sed命令删除特定行的方法

    Shell用sed命令删除特定行的方法

    这篇文章主要介绍了Shell用sed命令删除特定行的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Shell实现的Oracle启动脚本分享

    Shell实现的Oracle启动脚本分享

    这篇文章主要介绍了Shell实现的Oracle启动脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-01-01
  • Linux中grep命令详解

    Linux中grep命令详解

    grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令,这篇文章主要介绍了Linux中grep详解,需要的朋友可以参考下
    2023-02-02
  • shell脚本实现多彩进度条

    shell脚本实现多彩进度条

    这篇文章主要介绍了shell脚本实现多彩进度条的相关资料,需要的朋友可以参考下
    2017-07-07
  • Shell脚本break和continue命令简明教程

    Shell脚本break和continue命令简明教程

    这篇文章主要介绍了Shell脚本break和continue命令简明教程,break和continue命令用来在未达到循环结束条件时强制跳出循环,需要的朋友可以参考下
    2014-07-07
  • 用git打更新包的办法分享

    用git打更新包的办法分享

    Git是一款免费、开源的分布式版本控制系统,想信很多人也用过或者接触过,这篇文章为大家介绍下如何利用git来打更新包,有需要的可以参考借鉴。
    2016-08-08
  • linux中kvm的安装及快照管理

    linux中kvm的安装及快照管理

    这篇文章主要介绍了linux中kvm的安装及快照管理的相关资料,需要的朋友可以参考下
    2016-12-12
  • 详解Linux 操作系统下安装rpm包的方法步骤

    详解Linux 操作系统下安装rpm包的方法步骤

    这篇文章主要介绍了详解Linux 操作系统下安装rpm包的方法步骤的相关资料,需要的朋友可以参考下
    2015-11-11

最新评论