Subject: du failing at "du -sh . *"

From: Mathias Linnemann-Emden <[email-masked]>
Date: Fri, 19 Nov 2010 02:08:11 +0100

Hey there,

I don't know for sure if this is a bug in 'du' or not - but I've
requested several people to test it and we all get the same results:

$ mkdir du_test
$ cd du_test/
$ touch a b c d
$ echo "11111111" >e
$ du -sh . *
8,0K	.
$ du -sh * .
0	a
0	b
0	c
0	d
4,0K	e
4,0K	.
$ 

So not only the output of "du -sh . *" is wrong (not showing du for *),
but also the output of "du -sh * ." is incorrect (showing only 4K
instead of 8K for ".").

I use bash as my shell, but this also happens with sh, zsh, and several
other shells i've tried so far.

the version of coreutils I run is:

$ du --version
du (GNU coreutils) 8.7
Copyright © 2010 Free Software Foundation, Inc.

We've found out that the behaviour of du from coreutils 8.6 and below is
as expected:

$ mkdir du_test
$ cd du_test/
$ touch a b c d
$ echo "11111111" >e
$ du -sh . *
8,0K	.
0	a
0	b
0	c
0	d
4,0K	e
$ du -sh * .
0	a
0	b
0	c
0	d
4,0K	e
8,0K	.
$ 

I'm using ArchLinux with kernel 2.6.35-ARCH #1 SMP (x86_64). Filesystem
is ext4. The bug also is present on ext3, btrfs and ext2 filesystems (I
don't know if this might be of any relevance).

Please feel free to respond if you should have any further questions. 

Cheers

Mathias Linnemann-Emden