需求

删除全部高度大于宽度的图片(真是奇怪的需求 😂😂 )

思路

递归遍历所有文件,如果是图片,利用 sips 命令获取其宽度和高度(用 sips -hman 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 ""

参考