shell统计文件与目录个数

shell统计当前文件夹下的文件个数、目录个数

1
2
3
4
5
6
7
8
9
10
11
12
1、 统计当前文件夹下文件的个数
  ls -l |grep "^-"|wc -l
2、 统计当前文件夹下目录的个数
  ls -l |grep "^d"|wc -l
3、统计当前文件夹下文件的个数,包括子文件夹里的
  ls -lR|grep "^-"|wc -l
4、统计文件夹下目录的个数,包括子文件夹里的
  ls -lR|grep "^d"|wc -l
grep "^-"
  这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l
  统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

判断目录下文件数与指定文件数量是否相等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#! /bin/sh
num=$1
DR=`ls`
for dir in $DR
do
if [ -d "$dir" ]; then
cd "$dir"
fileNum=`ls -l |grep "^-"|wc -l`
if [ "$num" -ne "$fileNum" ];then
echo `pwd` >> ../error.txt
fi
cd -
fi
done