9

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

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

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

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

6 ответов6

10

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

#!/bin/bash

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

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

Я немного подправил скрипт @ 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

Возможно использовать 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.

2

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

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

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

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

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

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

1

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

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .