码迷,mamicode.com
首页 > 其他好文 > 详细

如何统计目录下各种文件的数目

时间:2014-08-09 00:02:26      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   文件   for   div   代码   

要想统计一个目录中的普通文件、目录文件以及其他文件的个数,就要事先知道这个文件夹中有哪些文件。然后,通过就可以判断这些文件哪些是普通文件、目录文件还是其他什么文件类型了。其实要想知道这个文件夹中有哪些文件,通过ls命令就可以知道了。

然后,在shell脚本中通过for循环得以实现。关键就在于,如果得到该文件夹中全部文件的文件名,这个时候就可以使用$(……)来实现。具体代码:

#! /bin/bash

let "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"
     fi
done

echo "directoy number is $dir_number"
echo "file numberis $file_number"
echo "other file number is $other_number"

以上是通过for循环来实现统计各类文件的代码实现,那么,如果想要使用while循环来实现,代码应该怎么编写呢?其实,关键部分与for循环是一样的,不一样的是如何判断程序的退出。程序代码为:

#! /bin/bash

let "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

     shift
done

echo "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/bash

let "dir_number=0"
let "file_number=0"
let "other_file=0"

set $(ls $1)
whiledo
     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

     shift
done

echo "directoy number is $dir_number"
echo "file numberis $file_number"
echo "other file number is $other_number"

以上就是统计目录中各类文件个数的具体实现代码。

如何统计目录下各种文件的数目,布布扣,bubuko.com

如何统计目录下各种文件的数目

标签:style   blog   color   使用   文件   for   div   代码   

原文地址:http://www.cnblogs.com/2013jiutian/p/3900260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!