{"id":2698,"date":"2016-05-25T23:15:05","date_gmt":"2016-05-25T15:15:05","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=2698"},"modified":"2016-05-25T23:15:05","modified_gmt":"2016-05-25T15:15:05","slug":"%e5%b0%86%e5%ad%97%e8%8a%82%e6%95%b0%e8%bd%ac%e6%8d%a2%e6%88%90%e7%94%a8%e6%88%b7%e5%8f%af%e8%af%bb%e7%9a%84%e6%a0%bc%e5%bc%8f_2","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/2698.html","title":{"rendered":"\u5c06\u5b57\u8282\u6570\u8f6c\u6362\u6210\u7528\u6237\u53ef\u8bfb\u7684\u683c\u5f0f_2"},"content":{"rendered":"<p>=Start=<\/p>\n<p>\u63a5\u4e0a\u7bc7\u300c<a href=\"http:\/\/ixyzero.com\/blog\/archives\/2696.html\">\u5c06\u5b57\u8282\u6570\u8f6c\u6362\u6210\u7528\u6237\u53ef\u8bfb\u7684\u683c\u5f0f<\/a>\u300d\uff0c\u4e0a\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4f7f\u7528Linux\u4e0b\u5df2\u6709\u7684\u5de5\u5177(numfmt\uff0c\u9700\u8981<a href=\"http:\/\/lists.gnu.org\/archive\/html\/coreutils\/2013-02\/msg00085.html\">GNU coreutils &gt;= 8.21<\/a>)\u8fdb\u884c\u8f6c\u6362\uff0c\u4f46\u662f\u6211\u8bb0\u5f55\u8fd9\u7bc7\u6587\u7ae0\u7684\u6700\u521d\u76ee\u7684\u662f\u81ea\u5df1\u7f16\u7801\u5b9e\u73b0\u76f8\u5173\u529f\u80fd\uff08\u6bd4\u5982\u5199\u6210\u4e00\u4e2aalias\/function\u653e\u5728.bashrc\u4e2d\u65b9\u4fbf\u65e5\u5e38\u4f7f\u7528\uff09\uff0c\u8fd9\u7bc7\u6587\u7ae0\u7684\u5185\u5bb9\u5c31\u662f\u4ecb\u7ecd\u901a\u8fc7\u5404\u79cd\u7f16\u7a0b\u8bed\u8a00\u6765\u5b9e\u73b0\u8be5\u529f\u80fd\u3002<\/p>\n<h5>\u53c2\u8003\u89e3\u7b54\uff1a<\/h5>\n<h6>1.awk\/gawk<\/h6>\n<pre class=\"lang:default decode:true \"># OK\necho \"12454162221\" | awk '\n    BEGIN {\n       split(\"B,KB,MB,GB,TB\", Units, \",\");\n    }\n    {\n       u = 1;\n       while ($1 &gt;= 1024) {\n          $1 = $1 \/ 1024;\n          u += 1\n       }\n       $1 = sprintf(\"%.2f %s\", $1, Units[u]);\n       print $0;\n    }\n'\n\n# OK\necho \"12454162221\" | gawk 'BEGIN { split(\"KMGTPEZY\",suff,\/\/)}\n{\n  match($0,\/([0-9]+)\/,bits)\n  sz=bits[1]+0\n  i=0; while ((sz&gt;1024)&amp;&amp;(i&lt;length(suff))) { sz\/=1024;i++ }\n  if (i) printf(\"%.3f %siB\\n\",sz,suff[i])\n  else   printf(\"%3i B\\n\",sz)\n}'\n\n# OK\necho \"12454162221\" | awk '{\n  xin=$1;\n  if(xin==0) {\n    print \"0 B\";\n  } else {\n    x=(xin&lt;0?-xin:xin);\n    s=(xin&lt;0?-1:1);\n    split(\"B KiB MiB GiB TiB PiB\",type);\n    for(i=5;y &lt; 1;i--) {\n      y=x\/(2^(10*i));\n    }\n    print y*s \" \" type[i+2];\n  };\n}'<\/pre>\n<h6>2.Perl<\/h6>\n<pre class=\"lang:default decode:true \">echo \"12454162221\" | perl -ne 'if (\/^(\\d+)\/){$l=log($1+.1);$m=int($l\/log(1024)); printf(\"%6.1f\\t%s\\n\",($1\/(2**(10*$m))),(\"K\",\"M\",\"G\",\"T\",\"P\")[$m-1]);}'\n\n# \u6700\u5927\u4ee5G\u4e3a\u5355\u4f4d\necho \"12454162221\" | perl -pe 's{([0-9]+)}{sprintf \"%.1f%s\", $1&gt;=2**30? ($1\/2**30, \"G\"): $1&gt;=2**20? ($1\/2**20, \"M\"): $1&gt;=2**10? ($1\/2**10, \"K\"): ($1, \"\")}e'<\/pre>\n<h6>3.Python<\/h6>\n<pre class=\"lang:default decode:true\">def bytes_format(filesize, unit=1024):\n    unit = float(unit)\n    for count in ['Bytes','KB','MB','GB', 'TB', 'PB']:\n        if 0 &lt; filesize &lt; unit:\n            return '{0:.3f} {1}'.format(filesize, count)\n        filesize \/= unit\n\nprint bytes_format(12454162221)<\/pre>\n<h6>4.PHP<\/h6>\n<pre class=\"lang:default decode:true \">&lt;?php\n\nfunction bytes_format($numbers, $bytesize = 1024) {\n   $readable = array(\"\",  \"KB\", \"MB\", \"GB\", \"TB\", \"PB\");\n   $index = 0;\n   while($numbers &gt; $bytesize){\n      $numbers \/= $bytesize;\n      $index++;\n   }\n   return(\"\".round($numbers, 2).\" \".$readable[$index]);\n}\necho bytes_format(12454162221) . \"\\n\";\necho bytes_format(124541622210) . \"\\n\";\necho bytes_format(1245416222100) . \"\\n\";<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/unix.stackexchange.com\/questions\/44040\/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1\">http:\/\/unix.stackexchange.com\/questions\/44040\/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/15854332\/file-size-in-human-readable-format\">http:\/\/stackoverflow.com\/questions\/15854332\/file-size-in-human-readable-format<\/a><\/li>\n<li><a href=\"http:\/\/www.kossboss.com\/linux---bytes-to-human-readable-command\">http:\/\/www.kossboss.com\/linux&#8212;bytes-to-human-readable-command<\/a><\/li>\n<li><a href=\"http:\/\/ram.kossboss.com\/humanbytesawk\/\">http:\/\/ram.kossboss.com\/humanbytesawk\/<\/a><\/li>\n<li><a href=\"http:\/\/ram.kossboss.com\/linux-bytes-to-human-readable-command\/\">http:\/\/ram.kossboss.com\/linux-bytes-to-human-readable-command\/<\/a><\/li>\n<li><a href=\"http:\/\/superuser.com\/questions\/553976\/how-to-display-the-size-in-human-readable-format-in-the-find-command\/554027#554027\">http:\/\/superuser.com\/questions\/553976\/how-to-display-the-size-in-human-readable-format-in-the-find-command\/554027#554027<\/a><\/li>\n<li><a href=\"http:\/\/serverfault.com\/questions\/62411\/how-can-i-sort-du-h-output-by-size\">http:\/\/serverfault.com\/questions\/62411\/how-can-i-sort-du-h-output-by-size<\/a><\/li>\n<li><a href=\"http:\/\/codesnippets.fesslersoft.de\/format-bytes-to-human-readable-size\/\">http:\/\/codesnippets.fesslersoft.de\/format-bytes-to-human-readable-size\/<\/a><\/li>\n<li><a href=\"http:\/\/www.developerfeed.com\/how-convert-bytes-human-readable-string-format-php\/\">http:\/\/www.developerfeed.com\/how-convert-bytes-human-readable-string-format-php\/<\/a><\/li>\n<li><a href=\"http:\/\/www.ivankristianto.com\/tips-convert-your-numbers-to-human-readable-format\/\">http:\/\/www.ivankristianto.com\/tips-convert-your-numbers-to-human-readable-format\/<\/a><\/li>\n<\/ul>\n<p>=END=<\/p>\n","protected":false},"excerpt":{"rendered":"<p>=Start= \u63a5\u4e0a\u7bc7\u300c\u5c06\u5b57\u8282\u6570\u8f6c\u6362\u6210\u7528\u6237\u53ef\u8bfb\u7684\u683c\u5f0f\u300d\uff0c\u4e0a\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4f7f\u7528Linux\u4e0b\u5df2\u6709\u7684\u5de5\u5177(numfmt [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,11,7,12],"tags":[74,609,85,48,8],"class_list":["post-2698","post","type-post","status-publish","format-standard","hentry","category-knowledgebase-2","category-linux","category-programing","category-tools","tag-awk","tag-numfmt","tag-perl","tag-php","tag-python"],"views":3665,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=2698"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2698\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=2698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=2698"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=2698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}