There is an easy convenience to using human readable numbers. Instead of a number like 1,099,511,627,776 you can use 1T. Instead of 1,073,741,824 you can use 1G and instead of 1,024 you can use 1K (that 1K = 1,024 is why the other numbers don’t end with multiple zeros).
But how do you do some (simple) math with human readable numbers, like adding up a list?
This is where numfmt
comes to your aid.
For example, lets make a list of numbers:
259G
1.1G
692G
5.5G
5.3G
140M
30G
302G
222G
281M
1.9G
60G
2.2T
If we put those in a file called sizes.txt
we can sum them with a simple command like this:
cat sizes.txt | numfmt --from=iec | awk 's+=$1 {} END {print s}' | numfmt --to=iec
The --from=iec
converts the numbers from human readable format to numbers, the awk
adds the numbers, and then the second numfmt
converts the sum back to a human readable number,