我想扫描 Linux 目录中的所有图像(在子文件夹中递归扫描),并找到分辨率高于特定阈值的图像(例如,至少具有分辨率的图像,800x600
或者更简单的说法是宽度高于1000
像素的图像)。然后我想将它们的地址记录在一个.txt
文件中,并附上它们的分辨率(或[width], [height]
更好的格式)。
我如何在 Bash 脚本中做到这一点?我必须扫描数百万张图像。
答案1
下面的 bash 脚本使用图像魔术师的identify
实用程序 - 将递归搜索指定目录中以.jpg
、和结尾的所有文件.jpeg
,然后在这些文件中搜索报告尺寸超过 800 x 600 的图像。.png
.gif
#!/bin/bash
if [ -z $1]; then
echo -e $0 '[path to search]\nRecursively search the specified directory for images over 800x600'
else
find $1 \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1>800 || $2>600'
fi