Shell编程简单案例
案例:
统计一个目录下超过指定大小的文件个数,再对筛选出的文件求总和。
要求:
输入:
输入指定目录,输入指定大小(单位M)。
输出:
输出文件个数,输出文件总和。
实现方式不唯一
以下是利用数组来实现,但是并不完善。
#!bin/bash
#统计一个目录下超过指定大小的文件个数,再对筛选出的文件求总和。
#要求:
#输入指定目录,输入指定大小(单位M)。
#输出文件个数,输出文件总和。
#实现方式不唯一
#auth:odysee
#输入的目录
dirPath=$1
#输入的文件大小
size=$2
#用一个数组接收筛选的文件
fileArray=($(find ${dirPath} ! -type d -a -size +${size}M | tr "\n" " "))
#循环遍历数组并计算文件总和
for fileName in ${fileArray[@]}
do
fileSize=$(du ${fileName} | cut -f1)
((totalSize=fileSize+totalSize))
done
#按要求输出
echo -e "超过${size}M文件个数为:${#fileArray[@]}\n文件总大小为: $((totalSize/1024))M"
测试
准备测试数据
cd testFile/
ls -l --block-size=M
total 39M
-rw-r--r-- 1 root root 11M Feb 16 14:59 apache-tomcat-9.0.10-windows-x64.zip
-rw-r--r-- 1 root root 6M Feb 16 14:59 hadoop-eclipse-plugin-1.1.2.jar
-rw-r--r-- 1 root root 11M Feb 16 14:59 httpd-2.4.33-o102o-x86-vc14-r2.zip
-rw-r--r-- 1 root root 2M Feb 16 14:59 JSONObject.rar
-rw-r--r-- 1 root root 2M Feb 16 15:00 mongo-java-driver-3.6.4.jar
-rw-r--r-- 1 root root 6M Feb 16 15:00 open***-connect-2.0.8.106.msi
-rw-r--r-- 1 root root 5M Feb 16 15:00 PanDownload-ok2.7.exe
执行
关于以上数组方式实现并不完善,例如未判目录是否存在等等。
希望大家给予宝贵的建议留言给予完善。
也可以补充或者共享一些其他的实现方法,越多越好。
感谢支持。