关联数组——按扩展名统计指定目录中文件的数量
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下如何统计一个目录下的文件个数以及代码总行数的命令
Google PlayAPK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(代码片