4096B é apenas o tamanho inicial do diretório, igual a um setor. Se, entretanto, a quantidade de dados a serem armazenados ( metadados , que inclui nomes de arquivos) aumenta, o tamanho do diretório também aumenta, sem que ele volte a diminuir para reduzir os problemas de fragmentação de disco:
$ mkdir testdir
$ cd testdir
$ ls -lhd .
drwxrwxr-x 2 me me 4.0K Jan 5 18:06 .
$ for ((i=0; i<1000; i++)); do touch this_is_a_long_file_name_$i; done
$ ls -lhd .
drwxrwxr-x 2 me me 64K Jan 5 18:08 .
$ rm this*
$ ls -lhd .
drwxrwxr-x 2 me me 64K Jan 5 18:09 .
EDIT: este é o mesmo experimento para o reiserfs:
$ mkdir testdir
$ cd testdir
$ ls -lhd .
drwxr-xr-x 2 me me 48 gen 5 18:54 .
$ for ((i=0; i<1000; i++)); do touch this_is_a_really_long_file_name_$i; done
$ !ls
ls -lhd .
drwxr-xr-x 2 me me 55K gen 5 18:55 .
$ rm this*
$ !ls
ls -lhd .
drwxr-xr-x 2 me me 48 gen 5 18:55 .
E isso é para o xfs:
$ mkdir testdir
$ cd testdir
$ ls -lhd .
drwxr-xr-x 2 me me 6 gen 5 19:00 .
$ for ((i=0; i<1000; i++)); do touch this_is_a_really_long_file_name_$i; done
$ ls -lhd .
drwxr-xr-x 2 me me 48K gen 5 19:01 .
$ rm this*
$ !ls
ls -lhd .
drwxr-xr-x 2 me me 6 gen 5 19:01 .
É óbvio que nem reiserfs nem xfs * se preocupam tanto com a fragmentação do disco, uma vez que o tamanho do diretório, após a exclusão dos numerosos arquivos, retorna ao seu valor original.