[РЕШЕНО] ImageMagick - холст

indeviral
Конечно проще. Только вот если появится необходимость экранирования, те же пробелы в названиях?
Да и по файловая обработка она гибче, можно там переместить только измененные файлы в другое место, или там дописать чего к названию.
Согласен, каждый делает как привык, лишь бы ему было и удобно и понятно.
Я привык немного делать по другому:
В части пробелов в названии файлов - прописываю в начале скрипта строку
tmpIFS=$IFS; IFS='\n'
В части построчного чтения — для меня проще вывести в файл, а потом читать его построчно. В данном случае строкой является полное наименование файла, а значит с этим файлом можно делать все, что пожелается, вплоть до удаления.

palpalych, привожу свой вариант скрипта. Может на будущее пригодится, с доработкой под конкретную задачу, лишнее можешь выкинуть.
#!/bin/bash
#
tmpIFS=$IFS; IFS='\n'
read -p "Введите ПОЛНЫЙ ПУТЬ для обработки: " N
find $N -name '*jpg' > ~/find.list
N=$(cat ~/find.list | wc -l)
count=0
cat ~/find.list | (
    while read line ; do
#        A=$(identify $line | awk '{print $3}' | cut -b 1-4)
# пришлось заменить команду, чтобы отрабатывались пробелы в имени файла
          A=$(identify -format "%wx%h" $line | awk '{print $1}' | cut -b 1-4)
        if [[ $A < 1600 ]]; then
           mogrify -gravity center -extent 1600 $line
           count=$((count+1))
        fi
    done
echo 'Всего просмотрено:' $N 'из них обработано:' $count
)
IFS=$tmpIFS
rm ~/find.list
exit 0
PS … спросит при выполнении ПОЛНЫЙ ПУТЬ - имеется ввиду типа /home/<user>/Фото

PSS ... indeviral, странно, но поставил пробел в наименовании и tmpIFS=$IFS; IFS='\n' не сработал - команда по изменению размера не выполнилась с файлом, имеющего пробел. Никогда такого раньше не замечал.
Так что palpalych в части пробелов в имени файлов данный скрипт не работает. Разбираться лень.

Все понял - и не должно сработать - строка то считывается из созданного файла, а на тот файл IFS не работает.
indeviral в данном случае оказался прав на счет пробелов. Нужно дорабатывать.
Ошибки не исчезают с опытом - они просто умнеют
Все понял - и не должно сработать - строка то считывается из созданного файла, а на тот файл IFS не работает.
IFS должен как раз таки при чтении каждой строки файла отрабатывать. А не работает скорее всего из за identify, ну вообще оно везде лучше про экранировать...
identify "$line"
Ошибки в тексте-неповторимый стиль автора©
indeviral
А не работает скорее всего из за identify, ну вообще оно везде лучше про экранировать...
Точно - ошибочно работает identify $line | awk '{print $3}' | cut -b 1-4 - из-за пробела идет смещение вывода
экранирование не помогает ...
UPD ... А я и забыл про вывод этого identify
PS ... чтобы исключить влияние пробелов заменил команду identify $line | awk '{print $3}' | cut -b 1-4 на
identify -format "%wx%h" $line | awk '{print $1}' | cut -b 1-4
Ошибки не исчезают с опытом - они просто умнеют
Мне вот интересно. Зачем IFS менять на каждый чих?
Lupus pilum mutat, non mentem.
vasek, зачем tmpIFS=$IFS, если в итоге ты его не восстанавливаешь?
Lupus pilum mutat, non mentem.
jim945
зачем tmpIFS=$IFS, если в итоге ты его не восстанавливаешь?
Забыл дописать в конце IFS=$tmpIFS ....давно такую хренотень не писал ...
Ошибки не исчезают с опытом - они просто умнеют
jim945
Мне вот интересно. Зачем IFS менять на каждый чих?
а какая альтернатива? В место ifs, bash на что нибудь заменить?)
Ошибки в тексте-неповторимый стиль автора©
"$line"?
Lupus pilum mutat, non mentem.
ну действительно, куда же без кавычек) При чём тут вообще ifs??)
Ошибки в тексте-неповторимый стиль автора©
Это тебе отправная точка для поисков)))
Lupus pilum mutat, non mentem.
 
Зарегистрироваться или войдите чтобы оставить сообщение.