2012-06-06 45 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分開並相乘。

使用BC這將是:

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

謝謝!我可以使用'identify -format'%w%h「' - 但是我怎麼在這個管道中增加_w_和_h_?可能嗎? – myhd

+0

我添加了一行_bc_ – rwst

+0

這太酷了!奇蹟般有效。謝謝 – myhd

0

這一修改shell命令似乎工作:

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

調整格式指令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

哦,對不起!我在OS X中使用'/ bin/bash' 10.6 – myhd

相關問題