There are many way to measure bloat e.g. by number of code lines. I think that other good way is to check command line options:

<verbatim>ls --help | awk {name = $2} /^ +-/ {i++ } END {print name ": " i}'</verbatim>

You can find attached AWK script, which checks almost all GNU coreutils, example output on CentOS 5.7:

<verbatim>
Name of command and number of command line options:

cat: 12
tac: 5
nl: 13
od: 20
base64: 5
fmt: 8
pr: 27
fold: 6
head: 6
tail: 13
split: 8
csplit: 8
wc: 7
sum: 4
cksum: 2
md5sum: 7
sha1sum: 7
sort: 20
uniq: 10
comm: 5
ptx: 20
tsort: 2
cut: 11
paste: 4
join: 11
tr: 6
expand: 5
unexpand: 6
ls: 59
dir: 59
vdir: 59
dircolors: 5
cp: 30
dd: 2
install: 19
mv: 12
rm: 8
shred: 9
mkdir: 6
rmdir: 5
unlink: 2
mkfifo: 4
mknod: 4
ln: 13
link: 2
readlink: 9
df: 16
du: 28
stat: 8
sync: 2
yes: 2
expr: 2
tee: 4
dirname: 2
basename: 2
pathchk: 5
stty: 18
printenv: 2
tty: 3
id: 9
logname: 2
whoami: 2
2
users: 2
who: 18
date: 10
uname: 11
hostid: 2
chcon: 12
runcon: 7
env: 4
nice: 3
nohup: 2
su: 9
sleep: 2
factor: 2
seq: 5

Number of commands: 77

Total number of options: 763
  without counting --version and --help: 609

Average per command: 9.90909
  without counting --version and --help: 7.90909
</verbatim>