描述
出于瘦身目的,需要了解项目中使用到了哪些大图片,项目工程很大的时候,无法人工处理,于是该脚本产生了,最终会输出 html 文件用于展示结果。
脚本适用于任何项目,不限制于 iOS 项目。
源码
#!/bin/bash
#定义第一个参数为搜索目录,如果没输入参数,默认搜索当前目录
SEARCH_PATH=$1
if [[ -z $SEARCH_PATH ]]
then
SEARCH_PATH="."
echo "Please input search path. Now search path is current path '.'"
fi
#临时文件存储未排序结果
TEMP="unsorted_image_temp"
rm -rf $TEMP
# 搜索目标文件 (-type f 普通文件 -name '*.gif' 名字后缀为gif的文件 -o 或者 or)
find $SEARCH_PATH -type f -name '*.gif' -o -name '*.jpg' -o -name '*.JPG' -o -name '*.png' -o -name '*.PNG' -o -name '*.jpeg' -o -name '*.JPEG' | while read file;
do
# 开始处理每一张图片
# 获取图片size (stat 查看状态 -f 按指定format打印 %后边跟z表示size)
size=`stat -f %z $file`
# 把图片大小转换成kb,保留三位小数点
sizekb=`echo "$size 1024.0" | awk '{printf "%.3f", $1 / $2}'`
echo $file,$sizekb
line="<a href=\"$file\">$file</a> ( $sizekb kb ) <br>"
# 把每张图片信息写进临时文件
echo $line >> $TEMP
done
# 根据图片大小进行排序 (-t " " 以空格作为分隔符 -n 以数字大小排序 -r 逆序排列 -k 4 以第四栏作为sort_key)
files=`cat $TEMP | sort -t " " -nr -k 4`
# 计算图片数量
count=`echo $(cat $TEMP | wc -l)`
# 计算图片总大小 (awk 命令,以空格分割,第4栏的累计之和)
total_size_kb=`awk -F ' ' '{sum += $4} END {print sum}' $TEMP`
rm -rf $TEMP
# 把结果打印到html文件,方便使用浏览器查看,且可以点击a标签直接查看图片
HTML="sorted_images_list.html"
rm -rf $HTML
echo "<html>\n<h1> Sorted images by Zhiyunyu</h1>" >> $HTML
echo "<body>" >> $HTML
echo "<h2>There are $count images (total size: $total_size_kb kb)</h2>" >> $HTML
echo "<pre>\n$files\n</pre>" >> $HTML
echo "</body>\n</html>" >> $HTML
效果
执行命令后会在终端打印信息,并最终生成 html文件,脚本支持携带目录参数,默认为当前目录
➜ bundles git:(zhiyunyu_test_shell) ✗ sh zhiyun_sort_image.sh
Please input search path. Now search path is current path '.'
./web.bundle/image-nodpi/news_relate_bar_v3_2.png,0.170
./web.bundle/image-nodpi/commentweiboicon@2x.png,0.899
./web.bundle/image-nodpi/giftIcon_placeHolder@2x.png,1.141
./web.bundle/image-nodpi/seperator_line@2x.png,0.094
./web.bundle/image-nodpi/intro_bg.png,0.289
./web.bundle/image-nodpi/weibohot_head_default_img@2x.png,1.214
./web.bundle/image-nodpi/placeholder_liveReservation@2x.png,1.653
./web.bundle/image-nodpi/concern_hook_icon_press@2x.png,0.106
./web.bundle/image-nodpi/expression_num_logo@2x.png,0.891
./web.bundle/image-nodpi/night-icon_cycle_worldcup_detail@2x.png,0.483
./web.bundle/image-nodpi/livefloor@2x.png,49.416
./web.bundle/image-nodpi/night-gameGift_back.png,0.607
./web.bundle/image-nodpi/default_subscribe_img_logo@2x.png,2.639
./web.bundle/image-nodpi/night-placeholder_editor@2x.png,1.411
./web.bundle/image-nodpi/night-offline_download_video@2x.png,1.883
./web.bundle/image-nodpi/night-giftIcon_placeHolder@2x.png,1.141
./web.bundle/image-nodpi/weibo_message_box_top@2x.png,0.236