Protip: if you just want to see what files are there use "echo *", it's much faster than ls.
$ mkdir testdir && cd testdir # make 200k files
$ perl -e 'for (1..200000) {open(FOO,">$_");close(FOO)}'
$ time echo * >>/dev/null
real 0m1.607s user 0m1.480s sys 0m0.128s
$ time ls >> /dev/null
real 0m1.458s user 0m1.324s sys 0m0.132s
$ # globs
$ time perl -e 'for (glob("*")) {print "$_\n"}' >>/dev/null
real 0m0.679s user 0m0.404s sys 0m0.272s
$ time find . -maxdepth 1 -print >> /dev/null
real 0m0.239s user 0m0.128s sys 0m0.108s
$ time ls -U >> /dev/null
real 0m0.195s user 0m0.064s sys 0m0.132sFor large directories, I either use 'ls --color=never' or the example C program in 'man 2 getdents'.
ls -U huge_dir | awk 'NR % 100000 == 0 { print NR } END { print NR }'
(prints the count every 100k files and the total at the end).