统计文件类型

打印文件类型信息

[root@MIO-2 ~]# file 1.sh 
1.sh: Bourne-Again shell script text executable

但是1.sh是我们不需要的,所以只需打印出类型即可

[root@MIO-2 ~]# file -b 1.sh 
Bourne-Again shell script text executable

然后我们需要遍历文件

path=$1

while read line;
do
echo $line;
done < <(find $path -type f)

当我们转入一个目录时,就可以遍历这个目录下的所有文件

第一个<用于输入重定向,第二个<用于将子进程的输出装换成文件名

最后我们需要建立一个数组,统计每种文件类型出现的次数

#!/bin/bash 

path=$1

declare -A arr

while read line;
do
    file_type=`file -b "$line" | cut -d ' ' -f1`;
    let arr["$file_type"]++;
done < <(find $path -type f)

for one in "${!arr[@]}"
do
    echo $one : ${arr["$one"]}
done

然后我们统计/下面的文件

[root@MIO-2 ~]# ./count_filetype.sh /
Java : 1
UTF-8 : 354
timezone : 1745
magic : 3
Compiled : 112
Plan : 1
raw : 2
C : 1
TeX : 1
LaTeX : 10
GNU : 3335
Perl5 : 635
...