限制不是嵌套子目录的深度(你可以有几十个,甚至更多),而是文件系统及其配额。
拥有非常长的文件路径也很不方便(并且可能效率稍低)。以编程方式,数百甚至数千个字符的文件路径是可能的;但是人脑无法记住这么长的文件路径。
大多数文件系统(在 Linux 上)对其inode数量都有固定限制。
一些文件系统对包含一万个条目的目录表现不佳(例如,因为搜索是线性的而不是二分法的)。而且你很难处理它们(例如,甚至ls *
给出太长的输出)。因此,明智的做法是/somepath/a/0001
....../somepath/z/9999
而不是/somepath/a0001
....../somepath/z9999
如果您有成千上万的用户,每个用户都有他的目录,您可能希望例如按用户的首字母对用户进行分组,例如 have/some/path/A/userAaron/images/foobar
等/some/path/B/userBasile/images/barfoo
。所以/some/path/A/
只有数百个子目录等......
一个方便的经验法则可能是:避免在每个目录中包含超过数百个条目(子目录或文件) 。
一些 Web 应用程序将小数据块存储在 SQL 数据库的各个行中,并将文件(可能会生成其名称)用于较大的数据块,将文件路径存储在数据库中。拥有数百万个只有几十个字节的文件可能效率不高。
一些系统管理员也在文件系统上使用配额。