Linux、Mac统计文件夹下的文件数目

注:本文出自博主 Chloneda个人博客 | 博客园 | Github | Gitee | 知乎

本文源链接https://www.cnblogs.com/chloneda/p/linux-count-file.html

最近需要统计 Linux 系统中某个文件夹下的文件数目,而Linux 系统下有三个命令:ls、grep、wc。通过这三个命令的组合,可以实现上述要求!

统计当前目录下文件的个数(不包括目录)

$ ls -l | grep "^-" | wc -l

递归统计当前目录下文件的个数(包括子目录)

$ ls -lR| grep "^-" | wc -l

查看某目录下文件夹的个数(不包括子目录)

$ ls -l | grep "^d" | wc -l

递归查看某目录下文件夹的个数(包括子目录)

$ ls -lR | grep "^d" | wc -l

查看某目录下文件夹和文件的个数(不包括子目录)

$ ls -l | grep "^[-|d]" | wc -l

递归查看某目录下文件夹和文件的个数(包括子目录)

$ ls -lR | grep "^[-|d]" | wc -l

参数说明

  • ls -l:长列表输出该目录下文件信息,每一行对应一个文件或目录,ls -lR 是递归列出所有文件,包括子目录。
  • grep "^-":过滤ls的输出信息,一般文件是"-"开头的,目录是"d"开头的。
  • wc -l:统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。

值得注意的是:Linux文件是有类型的,我们统计的时候,通过正确的命令才能获得我们想要的结果。在Linux中可以使用以下命令查看文件类型。

ls -l path

在显示文件的属性通常会以如下形式进行显示:

drwxr-xr-x
  • 第1个字母:代表文件类型
  • 第2~4字母:代表用户的权限
  • 第5~7字母:代表用户组的权限
  • 第8~10字母:代表其他的用户的权限

在Linux常见的文件类型有7种,分别如下所示:

文件属性 文件类型
- 常规文件,即file
d 目录文件
b block device 即块设备文件,如硬盘;支持以block为单位进行随机访问
c character device 即字符设备文件,如键盘支持以character为单位进行线性访问
l symbolic link 即符号链接文件,又称软链接文件
p pipe 即命名管道文件
s socket 即套接字文件,用于实现两个进程进行通信

以上信息灵活运用,可以正确帮助大家获得自己想要的统计结果!

原文地址:https://www.cnblogs.com/chloneda/p/linux-count-file.html