首页 > 代码库 > 如何统计目录下各种文件的数目
如何统计目录下各种文件的数目
要想统计一个目录中的普通文件、目录文件以及其他文件的个数,就要事先知道这个文件夹中有哪些文件。然后,通过就可以判断这些文件哪些是普通文件、目录文件还是其他什么文件类型了。其实要想知道这个文件夹中有哪些文件,通过ls命令就可以知道了。
然后,在shell脚本中通过for循环得以实现。关键就在于,如果得到该文件夹中全部文件的文件名,这个时候就可以使用$(……)来实现。具体代码:
#! /bin/bashlet "dir_number=0"let "file_number=0"let "other_file=0"for file in $(ls $1)do if [ -d $file] then let "dir_number+=1" elif [ -f $file ] then let "file_number+=1" else then let "other_file+=1" fidoneecho "directoy number is $dir_number"echo "file numberis $file_number"echo "other file number is $other_number"
以上是通过for循环来实现统计各类文件的代码实现,那么,如果想要使用while循环来实现,代码应该怎么编写呢?其实,关键部分与for循环是一样的,不一样的是如何判断程序的退出。程序代码为:
#! /bin/bashlet "dir_number=0"let "file_number=0"let "other_file=0"set $(ls $1)while [ "$1" != "" ]do if [ -d $1] then let "dir_number+=1" elif [ -f $1 ] then let "file_number+=1" else then let "other_file+=1" fi shiftdoneecho "directoy number is $dir_number"echo "file numberis $file_number"echo "other file number is $other_number"
其中的关键是使用set命令与$(……)共同使用,结果就可以把ls命令结果也就是各个文件。看成是不同的域,然后通过$1与shift命令共同使用,就可以判断目录中的全部文件,从而可以统计全部文件中各种类型的格式。
例外,在while循环中,除了使用以上方式外,还可以使用冒号命令,冒号命令可以简化逻辑,相当于TRUE的一个别名。另外,由于冒号命令是内置命令,其运行速度要比true快。具体实现代码为:
#! /bin/bashlet "dir_number=0"let "file_number=0"let "other_file=0"set $(ls $1)while :do if [ "$1" == "" ] then break fi if [ -d $1] then let "dir_number+=1" elif [ -f $1 ] then let "file_number+=1" else then let "other_file+=1" fi shiftdoneecho "directoy number is $dir_number"echo "file numberis $file_number"echo "other file number is $other_number"
以上就是统计目录中各类文件个数的具体实现代码。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。