关联数组——按扩展名统计指定目录中文件的数量

Posted ytdyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关联数组——按扩展名统计指定目录中文件的数量相关的知识,希望对你有一定的参考价值。

一、脚本说明

#!/bin/bash
#****************************************************
#Date:        2020-06-25
#Author:      Damon Ye
#FileName:   ExtensionName.sh
#Description:$1 indicates the Folder_Path
#****************************************************
declare -A Array
ls $1 | sed s/ /
/g >> $1/FileName.txt  每个文件名作为单独的1行,保存在FileName.txt中,以便于处理
while read FileName 
 do
   ArrayIndex=${FileName##*.}          贪婪匹配能更准确的找到扩展名。相反,非贪婪匹配能更准确的找到文件名。
   let Array[$ArrayIndex]++
 done < $1/FileName.txt
for i in ${!Array[@]}
  do
    echo "$i :::::: ${Array[$i]}"
  done
rm -f $1/FileName.txt         

二、执行结果

[root@localhost package]# bash ExtensionName.sh  ./test
mp3 :::::: 2
txt :::::: 3
doc :::::: 4
png :::::: 6

三、贪婪匹配——匹配最长的部分

#!/bin/bash
#****************************************************
#Date:        2020-06-25
#Author:      Damon Ye
#FileName:   GreedyMatch.sh
#Description:#匹配方向:从左到右   %匹配方向:从右到左
#****************************************************
filename=1a.2bb.3ccc.txt
echo -e "The filename is "$filename""
echo ${filename##*.}      最佳匹配 for 扩展名                                                                                                                                                                   
echo ${filename#*.}
echo ${filename%.*}      最佳匹配 for 文件名
echo ${filename%%.*}


[root@localhost package]# bash GreedyMatch.sh 
The filename is "1a.2bb.3ccc.txt"
txt
2bb.3ccc.txt
1a.2bb.3ccc
1a
             

 四、发散扩展——basename和dirname

[root@localhost test]# pwd
/tmp/test/package/test
[root@localhost test]# basename /tmp/test/package/test    提取路径最后的文件名
test
[root@localhost test]# dirname /tmp/test/package/test     提取路径前面的目录名
/tmp/test/package
[root@localhost test]#
dirname /tmp/test/package/test/file1.sh /tmp/test/package/test [root@localhost test]# basename /tmp/test/package/test/file1.sh file1.sh [root@localhost test]#

 

以上是关于关联数组——按扩展名统计指定目录中文件的数量的主要内容,如果未能解决你的问题,请参考以下文章

linux 命令 文件数量统计

linux下如何统计一个目录下的文件个数以及代码总行数的命令

LinuxLinux统计文件夹文件数量的命令

Google PlayAPK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(代码片

批量获取文件夹以及子文件夹下文件数量,输出到Excel表格?

5-4array统计不同类型shell的数量