Как повернуть все изображения в каталоге с помощью imagemagick?

Я хочу повернуть все изображения в каталоге, соответствующем шаблону.

Пока у меня есть:

for file in `ls /tmp/p/DSC*.JPG`; do convert $file -rotate 90 file+'_rotated'.JPG done 

но это не дает результата?

7 Solutions collect form web for “Как повернуть все изображения в каталоге с помощью imagemagick?”

В коде есть немало проблем. Прежде всего, вы разбираете ls, что является плохой идеей . Вам также нужно ссылаться на переменную как $file как вы указываете, и вы также должны процитировать его, чтобы он не разбивался на пробелы. Вы объявляете num но он никогда не используется. Более безопасным способом было бы:

 find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do convert "$file" -rotate 90 "$file"_rotated.JPG done 

Это все равно будет иметь проблемы, если ваши файлы содержат символы новой строки, но, по крайней мере, не сломаются, если ваш путь содержит пробелы.

Если все файлы находятся в одном каталоге, его можно упростить с помощью подстановки. Вы также можете использовать расширение параметра для создания foo_rotated.JPG1 вместо foo.JPG_rotated.JPG :

 for file in /tmp/p/DSC*.JPG; do convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG done 

Простой метод, использующий PE (расширение параметра) BASH

 for f in /tmp/p/DSC*.JPG do convert -rotate 90 "$f" "${f%.JPG}"_converted.JPG done 

Не разбирайте ls и ls здесь не требуется. Кроме того, вы должны указывать свои переменные, если они содержат пробелы.

 for file in *.JPG; do convert -rotate 90 "$file" rotated_"$file" done 

Не образное решение, но

 sips -r 90 *.JPG 

будет поворачивать все изображения, заканчивающиеся на .JPG 90 градусов. Это хороший лайнер.

mogrify -rotate 90 *.jpg Лучше One-Liner для вращения всех изображений с помощью imagemagick

mogrify -rotate 90 /tmp/p/DSC*.JPG начнет вращать все .JPG начиная с DSC в каталоге p

Mogrify (часть imagemagick ) отличается от Convert тем, что он изменяет исходный файл http://www.imagemagick.org/script/mogrify.php

Мне нужно было ссылаться на файл как $file , т. Е.

 for file in `ls /tmp/p/DSC*.JPG`; do convert $file -rotate 90 $file+'_rotated'.JPG done 

Вы можете скопировать / вставить этот код в ubuntu и сохранить его как «rotate.sh»

 #!/bin/bash -e CUR_DIR=`pwd` cd "${1}" for file in *.jpg; do convert "${file}" -rotate 90 "${file}"; done cd CUR_DIR 

После сохранения этого файла запустите его с терминала с помощью ./rotate.sh folder_containing_images

  • Как добавить каталог изменений и git pull к этой линии crontab?
  • Shell Scripting: вычислить мощность числа с реальным числом в качестве показателя
  • Регулярное выражение, как получить значение в сценарии оболочки?
  • Сценарий оболочки Bash содержит основной вопрос относительно синтаксиса и basename
  • Ловушка не захватывает SIGTSTP
  • Авторизация в SSH-соединении в OneLine
  • Сравнение столбцов в двух файлах и добавление первого файла
  • Копирование XML-контента между двумя тегами из одного файла в другой
  • Добавить строку после определенной строки в одной строке в текстовом файле
  • Как подождать всех дочерних процессов, кроме одного, чтобы закончить выполнение
  • Команда запуска / остановки в терминале без вмешательства человека?
  • Interesting Posts

    Shell пытается интерпретировать Perl-скрипт, несмотря на правильный shebang

    Как остановить команду ping, если нет ответа через 1 секунду?

    Самостоятельная версия версии GCC, перезаписывающей пакет

    SSH в другую виртуальную машину через сценарий Perl / Sh. Работает вручную

    Я хочу, чтобы grep из текстовой строки из многих файлов, как я могу запустить цикл для этого

    Разрешать подключения к Wi-Fi только к локальной службе, не переходить на проводной Ethernet

    Цветной вывод FIND?

    синхронизировать файлы рекурсивно между двумя папками, где файлы меньше 24 часов

    Как установить Bastille в последней версии Debian?

    Альтернативы панели «Единство»

    Проблемы с графикой и беспроводными драйверами на Crunchbang

    Какова связь между кодом командной строки и кодом языка более высокого уровня?

    Проверьте, имеет ли подключение к жилью доступ в Интернет

    Gajim больше не может подключиться к gmail

    Поддерживает ли ANSI ссылки по тексту?

    Linux и Unix - лучшая ОС в мире.