ImageMagick: как запихнуть в одну команду несколько строк

Арчеводы помогите, кто шарит
1. Можно ли все 5 команд записать в одну строку - одной командой? (все 4 картинки отличаются размерами, мне нужно склеить 4шт. в одну, с начало подводим под одну ширину, склеиваем две пары, потом под одну длину, склеиваем обе пары получаем четыре картинки в одной)
$ find . -iregex '.*.jpg' -exec convert '{}' -resize 1000 jpg:'{}' \;
$ convert -append 1.jpg 2.jpg 12.jpg
$ convert -append 3.jpg 4.jpg 34.jpg
$ find . -iregex '.*.jpg' -exec convert '{}' -resize x1000 jpg:'{}' \;
$ convert +append 12.jpg 34.jpg 5.jpg
или хотя бы как-то сделать меньше строчек, что-то объединить одной

2. Нужно переименовать файлы во всех корневых и вложенных папках, произвольно по возрастанию, т.е. файлы в алфавитном порядке превращаются в файлы с цифровыми именами в таком-же порядке (не так важно как первое), нашел такую команду, но к сожалению она переименовывает только файлы в одной папке, и сортировка нарушается
$ i=1 ; ls | while read; do mv "$REPLY" $((++i))".${REPLY//*.}"; done
я так понимаю опять же через find, но как не могу допетрить...
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
По поводу первого: можно просто в скрипт все сунуть
GitHub, ArchWiki, AUR
1. montage *.jpg и там дальше ман там всё относительно элементарно в одну строчку запросто! (imagemagik)
2.
files=`find  ./test  -type f`
f=1
for i in $files; do
    let "n = $f + 1"
    cp "$i" "./test2/test_$n.jpg"
    f=$n
done
можете написать в одну строку.
Ошибки в тексте-неповторимый стиль автора©
indeviral
в одну строчку запросто!
понятно... вы учитываете что фотографии не конгруэнтны по размеру
indeviral
можете написать в одну строку.
кабы знал как, написал бы...
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
palpalych
indeviral
в одну строчку запросто!
понятно...
вы подробней опишите, как вы их хотите соединить, а то не совсем понятно, в общем случае будет както так:
montage *.jpg -tile 2x2 -geometry 300x200 out.jpg

palpalych
кабы знал как, написал бы...

не ну замените в вашей "строчке" ls на
find  . -type f

А вообще что это за фетиш такой, писать в одну строчку??

ps.. фу какая мерзость...
n=0; for i in `find . -type f`; do let "n = $n + 1"; mv "$i" "test_$n.jpg";done
Ошибки в тексте-неповторимый стиль автора©
indeviral
n=0; for i in `find . -type f`; do let "n = $n + 1"; mv "$i" "test_$n.jpg";done
ну прекрасно же, благодарю

indeviral
montage *.jpg -tile 2x2 -geometry 300x200 out.jpg
как бы не должно оставаться никаких белых полосок, выше я написал как этого можно добиться, но целых 5 команд...
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
palpalych
как бы не должно оставаться никаких белых полосок, выше я написал как этого можно добиться, но целых 5 команд...

montage *.jpg -tile 2x2 -geometry 300x200\!+0+0 out.jpg
patashnik
montage *.jpg -tile 2x2 -geometry 300x200\!+0+0 out.jpg
спасибо большое, все отлично работает

indeviral
n=0; for i in `find . -type f`; do let "n = $n + 1"; mv "$i" "test_$n.jpg";done
что нужно добавить в формулу что бы картинки оставались в своих папках а не переносились в корневую?
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
Ну проще всего это
mv "$i" "test_$n.jpg"
заменить на
mv "$i" "`dirname "$i"`/test_$n.jpg"  
Ошибки в тексте-неповторимый стиль автора©
indeviral
заменить на
т.е. вот это должно получиться
n=0; for i in `find . -type f`; do let "n = $n + 1"; mv "$i" "`dirname "$i"`/test_$n.jpg";done
что-то мне не нравиться что посыпалось в терминале, второй раз запускать не рискну, пошел перебор всех папок в home
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
 
Зарегистрироваться или войдите чтобы оставить сообщение.