2012-06-06 2 views
0

У меня есть небольшой Однострочник в терминале, который должен написать количество пикселей многих файлов JPEG в текстовый файл:Преобразование результата ImageMagick из научного в десятичный?

find . -name *.jpg -exec convert {} -format "%[fx:w*h]" info: \; > sizes.txt 

Это на самом деле делает, но некоторые из чисел в научной нотации, как здесь :

949200 
960000 
1.098e+06 
1.038e+06 
1.1664e+06 
1.0824e+06 
831600 

самый надежный/элегантный способ иметь вывода команды только в десятичной системе счисления, например, в следующих строках?

949200 
960000 
109806 
103806 
1166406 
1082406 
831600 

мне было интересно, если вы могли бы сделать это в ImageMagick FX части или, вернее, труба на выходе в другую команду для преобразования. Благодаря!

ответ

2

Согласно http://www.imagemagick.org/script/escape.php нет очевидного способа получить другие форматы чисел с% fx: , поэтому требуется решение командной строки.

Преобразование вывода научной ноты w * h потеряет вас значительными цифрами , поэтому лучше выводить w и h отдельно и умножать.

Использование Ьс это было бы:

find . -name '*.jpg' -exec convert {} -format "%w*%h" info: \; |bc 
+0

Спасибо! Я мог бы использовать 'ident -format '% w% h" '- но как я могу умножить _w_ и _h_ в этом потоке труб? Является ли это возможным? – myhd

+0

Я добавил строку, используя _bc_ – rwst

+0

Это так здорово! Работает как шарм. спасибо – myhd

0

Эта модификация команды оболочки, кажется, работает:

find . -name *.jpg -exec convert {} -format "%[fx:w*h]" info: \; | xargs printf "%0.0f\n" > sizes.txt 

Adjust директивы форматирования printf "%0.0f\n" в соответствии с вашими потребностями.

Только для демонстрационных целей (это работает так же, с помощью функции поиска и т.д., и .jpg файлов найдены в моей системе):

$ cat data.txt 

949200 
960000 
1.098e+06 
1.038e+06 
1.1664e+06 
1.0824e+06 
831600 

$ cat data.txt | xargs printf "%0.0f\n" 

949200 
960000 
1098000 
1038000 
1166400 
1082400 
831600 
+0

Хммм ... 'printf' команда дает мне' PRINTF: 1.09056e + 06: не полностью converted' для недесятичных значений – myhd

+0

Ой, извините! Я на '/ bin/bash' в OS X 10.6 – myhd

Смежные вопросы