Это зависит от того, какая файловая система используется. У ext {2,3,4} есть опция dir_index, которая может быть установлена при их создании, что позволяет хранить тысячи или даже миллионы файлов в одном каталоге достаточно быстро.
btrfs еще не готов к работе, но неявно поддерживает эту идею на самом базовом уровне.
Но если вы используете серии ext без dir_index или большинства других файловых систем Unix, вам нужно будет перейти к более сложной схеме, состоящей из нескольких уровней каталогов. Я бы посоветовал вам этого избежать, если сможете. Это просто добавляет много дополнительных сложностей к тому, что файловые системы должны обрабатывать разумно для вас.
Если вы делаете более сложную схему, я бы предложил закодировать число в шестнадцатеричном формате и иметь 256 файлов / каталогов на каждом уровне. Файловые системы, которые не предназначены для обработки большого количества файлов в каждом каталоге, обычно выполняют линейное сканирование. Цель состоит в том, чтобы приблизить структуру типа B-Tree самостоятельно. 2 шестнадцатеричные цифры на каждом уровне дают примерно половину 4-килобайтного (общего размера) дискового блока на уровень с общими средствами кодирования каталогов. Это почти так же хорошо, как вы получите без действительно сложной схемы, такой как кодирование ваших чисел в базе 23 или базе 24.