统计行数、字符数、字节数的shell脚本

发布时间:2020-02-17编辑:脚本学堂
分享一个shell脚本代码,可用于统计文件的行数,统计字符数,统计字节数等。有需要的朋友参考下。

linux中,有一个常用的命令wc,可用来统计文件的行数、单词数、字符数以及字节数。

运行wc命令时,必须明确指定命令中的子文件夹的层级。

通常情况下,用于统计的文件夹,会有很多的层级,会使统计变得复杂。

本文提供的这个脚本,可以帮助我们搜索各级子文件夹,并给出每个文件夹级别的计数,并将结果存储在一个单独的文件,以供将来使用。

代码:
 

复制代码 代码示例:

#!/bin/bash
#filename: count_lines.sh

len=$(echo $1 |awk '{print length($0)}')
len2=$(echo $2 |awk '{print length($0)}')
if [ $len -ne "0" ]
then
x="$1"
i="1"
cc=0
while [ $i -le "$len" ]
do
 echo `expr substr $1 $i 1 `
 if [ `expr substr $1 $i 1 ` = "l" ] || [ `expr substr $1 $i 1 ` = "w" ] || [ `expr substr $1 $i 1 ` = "c" ] || [ `expr substr $1 $i 1 ` = "k" ]
 then
  lengh = "length=$(echo "$1" |awk '{print length($0)}')"
 else
  cc=`expr $cc + 1`
 fi
 i=`expr $i + 1`
done
if [ $cc -eq "0" ]
then
 rm ~/count_output
 echo "=======================current Directory==========================" >> count_output
 pwd >> count_output
 if [ $len2 -eq "0" ]
    then
      ls -l * | wc -$1 *.* | tail -k >> ~/count_output
  else
    ls -l * | wc -$1 *.$2 | tail -k >> ~/count_output
 fi
 ls -R | grep './' > list
 sed "s/:/ /" list  >> list1
 cat list1  | while read current_dir
 do
    echo "=======================$current_dir ==========================" >> ~/count_output
    cd $current_dir
    if [ $len2 -eq "0" ]
    then
      ls -l * | wc -$1 *.* | tail -k >> ~/count_output
  else
    ls -l * | wc -$1 *.$2 | tail -k >> ~/count_output
  fi
  cd -
 done
 clear
 rm list
 rm list1
else
print "invalid entry"
fi
else
print "input options  l w c k needs to be entered"
fi