ファイルのサイズがバイト単位で指定されている場合、 IEC (バイナリ) プレフィックスを末尾のゼロ付きの3 つの有効数字でフォーマットしたいと思います。たとえば、1883954 は 1.80M になります。
浮動小数点演算は bash ではサポートされていないため、代わりに awk を使用しました。問題は、末尾のゼロを保持する方法がわからないことです。現在の解決策:
if [ $size -ge 1048576 ]
then
size=$(awk 'BEGIN {printf "%.3g",'$size'/1048576}')M
elif [ $size -ge 1024 ]
then
size=$(awk 'BEGIN {printf "%.3g",'$size'/1024}')K
fi
(ファイルはそれほど大きくないので、より大きなユニットを考慮する必要はありません。)
編集:これには別の問題があります。以下の Adrian Frühwirth のコメントを参照してください。