Linux上统计文件夹下文件个数以及目录个数

时间:2024-01-01 09:24:35

对于linux终端用户而言,统计文件夹下文件的多少是经常要做的操作,于我而言,我会经常在谷歌搜索一个命令,“如何在linux统计文件夹的个数”,然后点击自己想要的答案,但是有时候不知道统计文件夹命令运行的机理,今天花了两个小时看了一下鸟哥的linux私房菜,看到了管道命令,以及正则化,所以也不难理解如何统计linux下文件夹下文件的个数

以下知识点包括管道命令,正则表达式

1.统计文件夹下文件的个数

可以试着在终端运行ls -l,可以达到如下结果

Linux上统计文件夹下文件个数以及目录个数

可以看出,运行ls -l命令之后,终端输出的结果是一行一行的字符,每一行字符对应一个目录或者是文件

管道命令的形式是“命令1 | 命令2”,其中命令2是管道命令

管道命令要操作的对象就是这样的一行一行的字符串,实际上就是一行一行的文本信息

管道命令可以是查找字符串的grep命令,也可以sort这样的排序命令,也可以是wc这样的统计命令,anyway,无论是查找还是排序,抑或是统计,他们操作的对象是一个命令输出的一行一行字符串

所以,如果运行ls -l会输出当前目录下的文件以及目录的信息。那么只要在当前目录下的输出结果中,统计出是文件的行的数目,就可以统计出当前目录下的文件个数

所以要找出命令ls -l输出的文件的信息与目录的信息的不同之处

Linux上统计文件夹下文件个数以及目录个数

不难看出,如果是文件的话,该行的字符串信息的第一个字符显示的是“-”,如果是目录的话,该行的字符的第一个显示的是"d",意即directory,找到这两者之间的区别,运行能够判别第一个字符的命令

Linux上统计文件夹下文件个数以及目录个数

ls -l | grep "^-"

其中“^-”是一个正则化项,表示字符串的第一个字符,

运行结果

Linux上统计文件夹下文件个数以及目录个数

那么接下来只要对管道命令运行的结果统计行号即可

Linux上统计文件夹下文件个数以及目录个数

即运行两次管道命令,即ls -l | grep “^-” | wc -l

结果如下

Linux上统计文件夹下文件个数以及目录个数

2.统计文件夹下目录的个数

同样的,利用第一个字符的区别,只需要将命令ls -l | grep “^-” | wc -l修改成ls -l | grep “^d” | wc -l

即可,如下

Linux上统计文件夹下文件个数以及目录个数

3.统计文件夹下文件个数,包括子文件

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

4.统计文件夹下目录个数,包括子目录

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

管道命令与正则化有很大的用处,这里先给自己挖个坑,后期继续补充