您的位置:首页 > 运维架构 > Shell

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

2015-05-14 17:54 260 查看
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
    done
else
    funCount "."
fi
echo "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=0
function funCount()
{
    for file in ` ls $1 `
    do
		if [ $# -gt 1 ];then
			if [ -f $1"/"$file ]  
			then
				if [[ $1"/"$file = $1"/"$2 ]]
				then 
					declare -i fileLines  
					fileLines=`sed -n '$=' $1"/"$file`  
					let llines=$llines+$fileLines  
					count=`expr $count + 1`
				fi		
			fi  
		else
			if [ -f $1"/"$file ]  
			then
				declare -i fileLines  
				fileLines=`sed -n '$=' $1"/"$file`  
				let llines=$llines+$fileLines
				count=`expr $count + 1`	
			fi  		
		fi        
    done
}

dirs=`sed -n '/^[^#]/p' dirs`
if [ $# -eq 1 ];then
	for dir in $dirs  
    do
        funCount $dir $1
    done
elif [ $# -eq 0 ] ; then
    for dir in $dirs  
    do
        funCount $dir
    done
else 
	echo "args error!!!"
fi
echo "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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: