第一种方法:
ls -l|grep "^-"|wc -l
ls -l 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)。如果ls -lR|grep "^-"|wc-l则可以连子目录下的文件一起统计。
grep ^- 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
第二种方法:
find ./ -type f|wc -l 由于默认find会去子目录查找,如果只想查找当前目录的文件用find ./ -maxdepth 1 -type f|wc -l即可。
需要说明的是第二种方法会比第一种方法快很多,尤其是也统计子目录时。
由于工作原因,需要统计某目录下atime时间大于365天的文件,google搜索之后,发现find命令异常强大。
find 有个-exec参数可以实现我需要的功能:
find . -atime +365 -exec ls -l {} \; | grep "^-" | wc -l
参数说明:
find . -atime +365 网上有答案;
-exec:表示执行后面的命令;
ls -l:略过;
{} \; :表示前面find...找到的结果;
grep "^-": 过滤,只保留文件;
wc -l: 统计数目;