如何在当前目录及子目录下统计所有".sh"文件的总数

如何在当前目录及子目录下统计所有".sh"文件的总数

如何在当前目录及子目录下统计所有".sh"文件的总数?      
复制内容到剪贴板
代码:
$ find . -name "*.sh" | wc -l
      
不好意思,我说错了,是"所有.sh文件的总行数",请指点      
复制内容到剪贴板
代码:
$ find . -name "*.sh" -exec cat {} \; | wc -l
      
版主,你的代码在我这不行啊:
find . -name "*" -exec cat {} \;
执行结果是好多好多的乱码;
$ find . -name "*.sh" -exec cat {} \; | wc -l
执行结果是"wc: : Invalid wide character“

我写了个复杂的:
find . -name "*.sh" -exec grep -c -h "查找串" {} \; >tfile
totalnum=0
while [ true ]
do
read line
if [ "$line" = "" ]
then
echo "total="$totalnum
exit 0
fi
totalnum=`expr $totalnum + $line` >/dev/null
done <./tfile

版主能在写个简单的吗      
不好意思,我弄错了:-)

谢谢版主!

我的那个也要更正一下:将 "查找串"改为"^"或"$"

可打印文件名称的见下:
复制内容到剪贴板
代码:
if [ "$#" -eq 0 ]
then
        set "^"
fi

find . -name "*.sh" -exec grep -c  $1 {} \; -print >tfile

totalnum=0
while [ true ]
do
        read line
        if [ "$line" = "" ]
        then
                echo "\tthe string \"$1\" appear total times="$totalnum
                exit 0
        fi
        ttt=`echo $line|grep "^\."`
        if [ "$ttt" != "" ]
        then
                echo "$ttt"
                continue
        fi
        if [ "$line" -gt "0" -a "$line" -lt "999999999" ]
        then
                totalnum=`expr $totalnum + $line` >/dev/null
        fi
done <tfile
      
避免使用 -exec 参数.
find . -name "*.sh" |xargs -n 1 cat | wc -l      
grep '[-+][0-9]\{2\}\.[0-9]\{3\}   [-+][0-9]\{3\}\.[0-9]\{3\} [0-9]\{4\}/[0-1]\{2\}/[0-9]\{2\}' filename | \
     awk '!/99.999/ { print $1, $2;}'