filename too long——探究Linux支持最长文件名255字节还是字符

Posted qjfoidnh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了filename too long——探究Linux支持最长文件名255字节还是字符相关的知识,希望对你有一定的参考价值。

最近在使用Python 的wget包下载文件时遭遇了OSError: filename too long的异常,经检查下载的文件名确实很长,于是去查询Linux x86_64架构下最长文件名支持是多少。

中提到Linux单目录名支持最大255个字符,全路径支持4096,但出问题的文件名称才九十多个字符。于是写了一个Python脚本验证一下:

import os

if __name__ == __main__:
    addname = 
    basename = ‘‘
    while True:
        basename += addname
        try:
            with open(basename, w) as f:
                os.remove(basename)
        except Exception as e:
            print(length %d failed % len(basename))
            break

输出为86,并不是256。而考虑到大多数汉字的utf-8编码一般占3字节,显然Linux对目录名长度255的限制是字节数而不是字符数。出问题的文件名因为含有大量中日文,其用bytes(str, encode=‘utf-8‘)转换为字节格式后长度已经超过255,尝试将文件名删减到255字节以下后成功保存。

结论:x86_64 Linux下文件名最长为255个字节,具体是多少个字符要看字符的utf-8编码,一般英文会比较长,中文和特殊符号等等比较短。

以上是关于filename too long——探究Linux支持最长文件名255字节还是字符的主要内容,如果未能解决你的问题,请参考以下文章

idea在使用git clone 时出现Filename too long

windows 操作系统下git报filename too long 处理方法

Git error: unable to create file xxx: Filename too long

git clone 单个分支和clone时遇到 filename too long的问题

Filename or extension too long, 提示文件名太长无法删除或修改

执行proguard-maven-plugin时,出现“CreateProcess error=206, The filename or extension is too long”