"du -h" with more decimal places
--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Unforgiving Himalayas Looping
--
Chapters
00:00 &Quot;Du -H&Quot; With More Decimal Places
00:35 Accepted Answer Score 12
01:00 Thank you
--
Full question
https://superuser.com/questions/633144/d...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#linux #bash #format #du
#avk47
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Unforgiving Himalayas Looping
--
Chapters
00:00 &Quot;Du -H&Quot; With More Decimal Places
00:35 Accepted Answer Score 12
01:00 Thank you
--
Full question
https://superuser.com/questions/633144/d...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#linux #bash #format #du
#avk47
ACCEPTED ANSWER
Score 12
du -Lsbc * | awk '
function hr(bytes) {
hum[1024**4]="TiB";
hum[1024**3]="GiB";
hum[1024**2]="MiB";
hum[1024]="kiB";
for (x = 1024**4; x >= 1024; x /= 1024) {
if (bytes >= x) {
return sprintf("%8.3f %s", bytes/x, hum[x]);
}
}
return sprintf("%4d B", bytes);
}
{
print hr($1) "\t" $2
}
'
awk-function based on this.
One could probably make the output look a bit nicer by piping it through column
or left-padding it with spaces.
Edit: Added the left-padding.
Also, to sort the list: du -Lsbc * | sort -n | awk
and then the awk-script.