最近需要统计 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 即套接字文件,用于实现两个进程进行通信 |
以上信息灵活运用,可以正确帮助大家获得自己想要的统计结果!
标签:文件,wc,文件夹,ls,Linux,grep,数目 From: https://www.cnblogs.com/gdjgs/p/18444235