Get actual file size with du on Linux
You can use du
, to report on the size of directories or files, but when my file is smaller than the block size I don't see the output I expect.
With a small file, this should be the size of the number of characters.
$ echo 'Every Good Boy Deserves Fudge' > staff.txt
$ cat staff.txt | wc -c
30
But when I use du
to examine file, I don't see 30.
$ du -h staff.txt
4.0K staff.txt
du
measures in block sizes because in general if any part of a block is used, then for the purposes of the operating system the entire block is used.
You can tell du
to care only about the size of the file with --apparent-size
which is only apparent because between the beginning and end of the file the OS can't tell which bytes are in use or are not in use.
$ du --apparent-size staff.txt
1 staff.txt
When reporting apparent size it rounds up to kilobytes, or --block-size=1k
To get the actual size of the file, you can use -b
which is the same as --apparent-size --block-size=1
$ du -b staff.txt
30 staff.txt
Tweet