shell统计指定目录、指定模式的文件行数

来源:互联网 发布:网络战是未来趋势 编辑:程序博客网 时间:2024/05/16 17:26

1、统计指定目录下文件个数(默认当前目录)

#!/bin/bash  #统计指定目录下文件个数(默认当前目录)count=0 function funCount(){    for file in ` ls $1 `    do        if [ -f $1"/"$file ] then  count=`expr $count + 1`fi      done}if [ $# -gt 0 ];then    for m_dir in $@    do        funCount $m_dir    doneelse    funCount "."fiecho "There are $count files."

实例:
[root@localhost sourcetemp]# sh filecount
There are 75 files . 


[root@localhost sourcetemp]# sh filecount  test
There are 75 files . 


2、根据配置文件读取指定的目录,再根据输入参数(模糊)匹配对应目录下的文件:

#!/bin/bash  #统计指定目录下符合规则的文件个数 front_action.log.2015-05-14-*count=0 llines=0function funCount(){    for file in ` ls $1 `    doif [ $# -gt 1 ];thenif [ -f $1"/"$file ]  thenif [[ $1"/"$file = $1"/"$2 ]]then declare -i fileLines  fileLines=`sed -n '$=' $1"/"$file`  let llines=$llines+$fileLines  count=`expr $count + 1`fifi  elseif [ -f $1"/"$file ]  thendeclare -i fileLines  fileLines=`sed -n '$=' $1"/"$file`  let llines=$llines+$fileLinescount=`expr $count + 1`fi  fi            done}dirs=`sed -n '/^[^#]/p' dirs`if [ $# -eq 1 ];thenfor dir in $dirs      do        funCount $dir $1    doneelif [ $# -eq 0 ] ; then    for dir in $dirs      do        funCount $dir    doneelse echo "args error!!!"fiecho "There are $count files."echo "There are $llines lines."

实例:

[root@adiislogdata164 action]# sh c1.sh 
There are 410 files.
There are 398091119 lines.
[root@adiislogdata164 action]# sh c1.sh front_action.log.2015-05-13-*
There are 240 files.
There are 234195303 lines.

0 0