正如@ sergiy-kolodyazhnyy所说,最大文件名长度将取决于文件系统,绝大多数文件名长度限制为255个字节。
他的图表中一个明显的遗漏是光学媒体。虽然UDF和Rock Ridge扩展名对文件名的限制是255个字符,但是没有Rock Ridge和Joliet的ISO9660都有更严格的限制,如果您要执行诸如备份youtube-dl
下载之类的操作,则可能会遇到这些限制。
如果您的光盘制作程序可以选择不违反规范的方式,则Joliet文件名最多只能包含64个UTF-16代码点或103个UTF-16代码点。
同样,如果您在使用规范时过于随意,则不带Rock Ridge扩展名的ISO 9660 2级和3级文件名只能使用31个字符或37个字符的文件名。
ISO 9660:1999,这是由genisoimage但不喜欢的K3b支持前端,无论是具有207个字节的限制(没有岩岭)或197个字节(带岩岭)。
(来源:genisoimage
联机帮助页)
至于最大路径长度,这是一个很大的误解。大多数Linux文件系统都没有。
有一个命名常量PATH_MAX
,但它仅适用于特定的API POSIX最大,它可以工作的 周围。
此“路径长度无限制”约定的唯一相应例外是FAT32和exFAT(32,760个Unicode字符),NTFS和ReFS(32,767个Unicode字符),UDF(1,023字节)和ISO 9660(不清楚,但我已经看到了)它表示为180、207、212或222个字节)。
通过运行此小型Python程序,然后浏览生成的目录,可以很容易地证明这一点。
import os
for X in range(20):
os.mkdir('x' * 255)
os.chdir('x' * 255)
My bash
(在提示中显示整个路径)将出现问题。但是my zsh
,它仅在提示中显示当前文件夹,不会有任何问题,甚至具有pwd
内置功能,可以显示整个5000字节以上的路径而没有问题。