Nitpick: level 2 subdirectories entry count, off by one?
Looking at a generated file system, the directory layouts:
- level 1: 0 to 999/
- level 2: 0 to 1000/
- file-1.txt to file-1000000000.txt
 
 
- level 2: 0 to 1000/
The level 2 subdirectory holds 0 to 1000, so, 1001 entries. This doesn't screw up the overall count, but it lacks symmetry. I think this would fix it, but I haven't verified it yet:
             self.prev = next;
             if (next % self.per_level) == 0 {
                 self.b += 1;
-                if self.b > self.per_level {
+                if self.b >= self.per_level {
                     self.a += 1;
                     self.b = 0;
                 }