Does it matter how many files I keep in a single directory? If so, how many files in a directory is too many, and what are the impacts of having too many files? (This is on
I have had over 8 million files in a single ext3 directory. libc readdir()
which is used by find
, ls
and most of the other methods discussed in this thread to list large directories.
The reason ls
and find
are slow in this case is that readdir()
only reads 32K of directory entries at a time, so on slow disks it will require many many reads to list a directory. There is a solution to this speed problem. I wrote a pretty detailed article about it at: http://www.olark.com/spw/2011/08/you-can-list-a-directory-with-8-million-files-but-not-with-ls/
The key take away is: use getdents()
directly -- http://www.kernel.org/doc/man-pages/online/pages/man2/getdents.2.html rather than anything that's based on libc readdir()
so you can specify the buffer size when reading directory entries from disk.