关联数组——按扩展名统计指定目录中文件的数量
2021-05-05 13:27
标签:path 结果 脚本 while gre nbsp 执行 round dir 关联数组——按扩展名统计指定目录中文件的数量 标签:path 结果 脚本 while gre nbsp 执行 round dir 原文地址:https://www.cnblogs.com/ytdyz/p/13192266.html一、脚本说明
#!/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/ /\n/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]#
文章标题:关联数组——按扩展名统计指定目录中文件的数量
文章链接:http://soscw.com/index.php/essay/82748.html