fileListCount.sh 内容如下:
#!/bin/bash
# 定义一个递归函数
function fileLines(){
# 开启目录循环 $1 是指调用命令时传入的第一个参数 目录
for file in `ls $1`
do
# 如果当前是个目录 则递归自身
if [ -d $1"/"$file ];then
fileLines $1"/"$file
else
# 否则认为是个文件 统计各文件里面的各非空行的行数
echo $1"/"$file `grep -v '^\s*$' $1"/"$file | wc -l`
fi
done
}
# 如果参数个数 > 0 则使用参数
# 否则 默认当前目录
if [ $# -gt 0 ];then
for m_dir in $@
do
fileLines $m_dir
done
else
fileLines "."
fi
执行:
./fileListCount.sh /home/test
或者
./fileListCount.sh