背景:我有一个文件夹,里面装满了保存的桌面图片。我想根据分辨率(1024x768 等)将它们放入文件夹中。即时创建文件夹是一种优势。目前,所有图片都在一个文件夹中,但其中一些在子文件夹中。如果这样更简单,我可以手动合并它们。
我更喜欢终端,尽管我还是个 Bash 新手。实际上,我根本不是一个程序员。
我正在使用 Mac OS X,但我并不反对安装额外的应用程序来实现这一点(MacPorts?),甚至使用其他操作系统(我现在在 VMWare 中安装了 Windows XP、Windows Vista 和 Ubuntu 9)。
答案1
我知道这是一个超过一年的话题(对此感到抱歉),但我认为有人可能需要完整的工作脚本,所以这里就有了。把这里的想法汇编成脚本,我们就得到了。
#!/bin/bash
for image in *.jpg;
do res=$(identify -format %wx%h\\n $image);
mkdir -p $res;
mv $image $res;
done
答案2
真的,谢谢大家的回复!我又回来了,更有经验了,这里的大多数评论现在都更有意义了。
我稍微调整了@zatatlan 的脚本以适应文件名中的空格并添加更多文件扩展名。
#!/bin/bash
shopt -s nullglob # The script spits errors if this is not set and there are, say, no *.png files.
for image in *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP *.png *.PNG;
do res=$(identify -format %wx%h\\n "$image");
mkdir -p $res;
mv "$image" $res;
done
答案3
可以使用图像魔法检测图像分辨率。将其包装在 bash 循环中即可。我不会等到回家后再使用 bash shell,所以这是我脑海中浮现的东西。语法可能不正确,但它可能会给你一些线索。
for image in $(`*.jpg`) do
res=`identify $image | grep -o 'Resolution:'`
if [ ! -d $res ]; then
mkdir $res
fi
mv $image $res
done
该脚本可动态创建目录。bash 和 imagemagick 均适用于 Mac。
答案4
这图像魔术师识别命令可以为您提供像素的宽度和高度,例如
~$ identify -format %w_%h\\n *jpg
2868_3429
1056_960
您可以将其放入 bash 脚本中作为 for 循环的一部分,并且为了安全起见,将文件复制到与分辨率同名的目录中(检查它是否存在,如果不存在则创建)。