需求
删除全部高度大于宽度的图片(真是奇怪的需求 😂😂 )
思路
递归遍历所有文件,如果是图片,利用 sips
命令获取其宽度和高度(用 sips -h
和 man sips
查看其用法),如果高度大于宽度则删除。
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #!/bin/bash
dir="/Users/wy/Desktop/temp"
select_img() { for file in `ls $1`; do # 如果是普通文件 if [ -f "$1/$file" ]; then # 如果是图片,就获取宽高 if [ ${file##*.} == "png" ] || [ ${file##*.} == "PNG" ] || [ ${file##*.} == "jpg" ]; then imgH=`sips -g pixelHeight "$1/$file" | awk -F ':' '{print $2}'` imgW=`sips -g pixelWidth "$1/$file" | awk -F ':' '{print $2}'` # 高大于宽则删除 if [ $imgH -gt $imgW ]; then rm "$1/$file" echo "delete $1/$file" fi fi # 如果是文件夹,继续遍历该文件夹下的文件 else select_img "$1/$file" fi done }
select_img "$dir"
echo "" echo "Done!" echo ""
|
参考