Как отсортировать изображения в папки по разрешению?

7447
flammable

Фон: у меня есть папка, полная сохраненных изображений на рабочем столе. Я хотел бы поместить их в папки, исходя из их разрешения - 1024x768 и т. Д. Создание папок на лету является бонусом. В настоящее время все изображения находятся в папке, но некоторые из них находятся в подпапках. Я могу объединить их вручную, если это облегчит задачу.

Я бы предпочел терминал, хотя я все еще новичок в Bash. Я совсем не программист, правда.

Я использую Mac OS X, но я не против установки дополнительных приложений для этого (MacPorts?) Или даже использования другой ОС (у меня есть Windows XP, Windows Vista и Ubuntu 9 прямо сейчас в VMWare) ).

Любая помощь будет оценена! Спасибо!

8

6 ответов на вопрос

10
zatatlan

Я знаю, что это тема более года (извините за это), но я думаю, что кому-то может понадобиться полный рабочий сценарий, так что вот оно. Взяв идеи здесь и составив сценарий, мы получим.

#!/bin/bash  for image in *.jpg; do res=$(identify -format %wx%h\\n $image); mkdir -p $res; mv $image $res; done 
4
flammable

Серьезно, спасибо за ответ, всем! Я вернулся к этому, более опытному, и большинство комментариев здесь имеют больше смысла.

Я слегка подправил скрипт @ zatatlan, чтобы вместить пробелы в именах файлов и добавить больше расширений файлов.

#!/bin/bash  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
user4126

Возможно использовать imagemagick для определения разрешения изображения . Заверните его в петлю bash и все. Я не буду ждать, пока не доберусь домой до раковины, так что вот что-то с моей головы. Синтаксис, вероятно, неправильный, но он может дать вам некоторые подсказки.

for image in $(`*.jpg`) do res=`identify $image | grep -o 'Resolution:'` if [ ! -d $res ]; then mkdir $res fi  mv $image $res done 

Скрипт создает каталоги на лету. Для Mac доступны как bash, так и imagemagick.

Вы можете сделать скрипт немного короче и проще, заменив блок if на простой mkdir -p $ res. Ryan Thompson 15 лет назад 0
2
nik

Есть Amok EXIF ​​Сортировщик

AmoK Exif Sorter может переименовывать изображения, а также перемещать или копировать их в произвольные папки.
Папки могут быть названы в соответствии с данными exif.

Предлагает предварительный просмотр имен файлов, встроенный просмотр изображений и exif-данных, перетаскивание, просмотр миниатюр, автоматическую проверку обновлений и профилей для разных камер и пользователей.

Также поддерживает видео файлы по дате создания, файлы в формате IPTC.

Написан на JAVA, работает на всех платформах, поддерживающих JRE5.
Оформить список функций по ссылке.

Не расстраивайтесь из-за немецкого языка.
Потяните вниз Spracheи выберите Englisch, перезапустите приложение.

1
mas

Команда идентификации ImageMagick может дать вам ширину и высоту в пикселях, например

~$ identify -format %w_%h\\n *jpg  2868_3429 1056_960 

Вы можете поместить это в скрипт bash как часть цикла for и, для безопасности, скопировать файлы в каталог, имя которого совпадает с разрешением (проверьте, существует ли он, и создайте, если нет).

0
DHayes

Основным способом, который дает приблизительный порядок разрешения, является организация по размеру файла. Это то, что должно быть встроено в любую ОС, поэтому вам не нужно ничего особенного. Большая загвоздка в том, что формат ваших фотографий должен быть одинаковым, чтобы это работало. Это не идеальное решение, но это может быть простой пробел, пока вы не найдете то, что действительно отвечает всем требованиям.

Похожие вопросы