前言
众所周知,Linux系统中文件名长度不能超过255个字符!
而大多数的Linux系统在显示中文时,使用的是UTF-8编码。这种编码在Linux中,一个中文需要占用3个字符!因此,在Linux系统中,文件名最多也就能有80多个中文。。
一个普遍的认知错误
但是对于这个问题,即使在开发人员中,也存在普遍的认知错误!
很多人都以为255这个长度是Linux内核的限制,但其实不是,它是由文件系统限制的!
Linux中常用的文件系统如ext4、XFS等,都只能支持到255个字符。
困扰
Windows常用的文件系统,如NTFS等,可以支持非常长的文件名!
随着国产化(都是Linux系统)的推进,以前在Windows中创建的大量文件需要迁移到Linux系统中,此时,这些名称过长的文件就会照成很多麻烦。。
解决方案
知道了原因,那解决就简单了许多。
方案一:在文件迁移前,先把名称过长的文件名改短
统信以前出过一个迁移助手,可以在大量文件中快速找出名称过长的文件,下载地址:
https://pan.baidu.com/s/1zAJP_rJteA8u4rKWja-5OQ
提取码: nhdl
但,实测这工具没那么好用~
方案二:在Linux系统中,使用NTFS这类支持长文件名的文件系统
电脑中有两个硬盘是最省事的,一个装系统,另一个格式化成NTFS,文件都在它的分区中处理就行。
如果只有一个硬盘,做系统时也没有预留空间,那就需要调整一个分区出来,然后格式化成NTFS。不过,这里我只讲方案,不想讲具体操作~
额外讲一点,NTFS无法支持Linux复杂的文件权限,因此不能做为根分区的文件系统
一个“异类”
统信UOS专业版1060版本,号称解决长文件名的问题,可以让文件名支持到255个中文。
研究之后发现,它处理的方法有点意思。
如图所示,它将桌面、音乐、图片、下载、视频、文档这几个常用文件夹挂载成了dlnfs格式
然后配合文件管理系统,在.longname文件中,记录下文件的真实名称和它在文件管理器中显示名称。对于用户而言,似乎真的可以。。
需要注意:1060版本默认没有开启长文件名支持,因为会影响文件管理器的性能。可以在应用商店中安装udom工具,使用它来开启:
功能好不好用我不评价,不过开发人员这脑洞,我还是挺佩服的~