Você deve otimizar a estrutura de arquivos. Então, ao invés de
for i in $(seq 1 1000); do touch file.$i; done
faça algo mais inteligente como (bash supostamente):
function bucklocate()
{
hash=$(echo -n "$1"|md5sum|cut -f1);
echo -n "${hash:1:1}/${hash:7:1}/${hash:9:2}/$1";
}
hexdig="{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}"
eval mkdir -p $hexdig/$hexdig/$hexdig$hexdig
for i in $(seq 1 1000); do touch $(bucklocate file.$i); done
Agora este exemplo é bastante lento por causa do uso de md5sum [1], use algo como o seguinte para uma resposta muito mais rápida, contanto que você não precise de nenhum nome de arquivo específico, duplicatas não são preocupantes e não há necessidade de um hash repetível de um certo nome:)
mkdir -pv {0,1,2,3,4,5,6}/{0,1,2,3,4,5,6,7,8,9,10,12}
for a in $(seq 1 100); do i=$RANDOM; echo touch "$(($i%7))/$(($i%13))/file.$i"; done
É claro que tudo isso é um conceito de empréstimo indesejado de hashtables