V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lvsemi1
V2EX  ›  程序员

长文件名在 Linux 上有没有解?

  •  
  •   lvsemi1 · 2020-01-15 12:33:04 +08:00 · 8533 次点击
    这是一个创建于 1534 天前的主题,其中的信息可能已经有所发展或是发生改变。

    windows 和 osx 文件名长度限制都有 255 个字符,windows 还能额外扩展。但 linux 上的文件系统,无论是常见的 ext4、btrfs 还是 xfs、zfs,一律都是 255 字节,很多原本文件名百来个汉字的文件不重命名下根本搬不过去

    19 条回复    2020-01-16 10:14:13 +08:00
    codehz
        1
    codehz  
       2020-01-15 12:37:05 +08:00 via Android
    无解,用数据库吧
    gxustudent
        2
    gxustudent  
       2020-01-15 12:48:07 +08:00
    脑子一根筋么?文件名换成文件夹名,再多重嵌套是否可以?
    learningman
        3
    learningman  
       2020-01-15 12:54:25 +08:00 via Android
    sha256 一下,建个表对应
    MeteorCat
        4
    MeteorCat  
       2020-01-15 13:00:33 +08:00 via Android
    ln -s /xxx/yyy/zzz/........./ /tmp_dir
    jasonyang9
        5
    jasonyang9  
       2020-01-15 13:04:24 +08:00
    好奇这百来个汉字都是些啥
    MeteorCat
        6
    MeteorCat  
       2020-01-15 13:05:06 +08:00 via Android
    如果文件名超过 255 字节要修改内核,如果是仅仅文件夹长度 255 字节直接做个软连接当作文件夹入口
    imn1
        7
    imn1  
       2020-01-15 13:08:18 +08:00   ❤️ 1
    @jasonyang9 #5
    估计是日语汉字
    iamwho
        8
    iamwho  
       2020-01-15 13:16:02 +08:00   ❤️ 6
    这就要想一想了,为什么书写的时候,使用毕加索( Pablo Picasso ),而不是巴布罗·迭戈·何塞·弗朗西斯科·狄·保拉·胡安·纳波穆西诺·玛莉亚·狄·洛斯·雷梅迪奥斯·西普里亚诺·狄·拉·圣地西玛·特里尼达·路易斯·毕加索( Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz Picasso )。
    love
        9
    love  
       2020-01-15 14:07:19 +08:00
    建个对应的文本文件放文件名?
    比如 “101 - 截断的文件名...” + 对应的 101.txt
    lihongjie0209
        10
    lihongjie0209  
       2020-01-15 14:13:05 +08:00
    hash 一下吧, 定长输出
    lvsemi1
        11
    lvsemi1  
    OP
       2020-01-15 14:40:33 +08:00   ❤️ 4
    谢谢大家的建议,看来确实无解,捣鼓文件名的映射虽然简单,但也意味着为了解决一个问题引入新问题,不仅要维护还得增加别人的培训成本,还是直接 ntfs 算了

    @iamwho
    对于普通用户来说,文件名就是最直观的文件标签

    毕加索是个家喻户晓的名人,书面环境同时也会或多或少交待这个名字的生平,当然可以简便

    但是如果一位平凡的玛丽苏女士希望别人更好的了解她的家世,显然用 “璃莹殇·安洁莉娜·樱雪羽晗灵·血丽魑·魅·安塔利亚·伤梦薰魅·海瑟薇·蔷薇玫瑰泪·羽灵·邪儿·凡多姆海威恩·夏影·琉璃舞·雅·蕾玥瑷雅·曦梦月·玥蓝·岚樱·紫蝶·丽馨·蕾琦洛·凤·颜鸢·希洛·玖兮·雨烟·叶洛莉兰·凝羽冰·玛丽·苏” 这个名字会更好
    crc8
        12
    crc8  
       2020-01-15 15:52:25 +08:00   ❤️ 1
    @jasonyang9 文件名即内容。
    lvsemi1
        13
    lvsemi1  
    OP
       2020-01-15 16:43:34 +08:00
    又测试了下改内核里文件系统的 limits 重新编译,ls、mv 之类简单的命令似乎能用,但是 cat 之类的直接报找不到文件,不继续折腾了
    ps1aniuge
        14
    ps1aniuge  
       2020-01-15 17:47:17 +08:00
    @lvsemi1
    win7,win2008r2 有长文件名问题。win10,win2016 没有。
    具体来说,是从 win10 一周年( win10-14393 )增加的新特性。

    ------------------------ [win10 新增功能,对比 win7] ------------------------
    win7,win2008r2,已经 eol 了。你到底要不要用 win10 ?
    win10 到底比 win7 增加了什么功能?
    整理如下,分享给有需要的人:


    win10-10240 的好处:(新增功能)
    1 从网上自动更新的锁屏壁纸,win7 没有。备注:按 win+L 锁屏。
    壁纸存储目录
    C:\Users\用户名\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets
    2 敲命令不? cmd 和 powershell 支持 [用 alt+enter] 全屏,ctrl+c 和 ctrl+v。powershell 命令比 win7 多 1500 多个。
    3 win10 支持 http2.0,传输数据更快,上网更快。win7 不行。
    4 win10 支持 usb3.0。win7 还要装驱动。win10 只要有网卡驱动,其他驱动自动更新好!
    5 貌似 win10 上运行.net 程序比 win7 更顺畅了,首次运行不慢。
    6 笔记本外接显示器用户注意:win+p 好使,比 win7 略佳。


    win10-14393 红石的好处:(一周年版比 win10 旧版新增功能)
    1 红石引入了名叫 Windows Subsystem for Linux(WSL)的功能。
    WSL 实现了 Linux 系统调用的子集,允许 Windows 用户使用 Bash 不用修改直接运行原生 Linux 程序。
    2 win10 有目录+文件名长度 260 字符限制,红石没有了。
    3 红石的 hyper-v 原生支持 docker。win10-10586 不行。详见:
    https://www.sysgeek.cn/preview-hyper-v-containers-windows-10-build-14352/

    4 TCP 协议支持 TCP Fast Open (TFO),
    5 驱动程序强制签名,更安全!
    omph
        15
    omph  
       2020-01-15 21:44:09 +08:00
    先用 7z 压缩一下试试
    FrankHB
        16
    FrankHB  
       2020-01-15 22:00:48 +08:00
    @lvsemi1 对普通人来讲,文件名就是文件名,只是访问文件的入口的一种。
    文件名作为路径的组成部分,历史上起到的主要作用是唯一键(算上链接,在文件系统里也不唯一了,只是目录下唯一),而不是索引。键的名字上还可能有各种乱七八糟的约束……根本不适合当一般意义的标签。
    文件名的本质其实就是一种元数据,只不过具有历史显著性而不方便随便扔掉——为了兼容构成路径这种 VFS 遗留 API 要求的输入才一概保留的( shell 这样的 CLI 在这个意义上也是 API ),因此很多时候相当鸡肋(特别不能指望兼容性)。而在现代文件系统内部作为键的作用,也已经被 inode 里的特定具体文件系统设计的元数据取代了。
    普通用户基本不会有这些概念。作为开发者,你需要引导他们绕过坑,而不是推进坑里。不保险就跑。

    至于能多坑的例子么……比如:
    https://www.mercurial-scm.org/wiki/EncodingStrategy#The_.22makefile_problem.22
    我就不多说脏话了(这里还好就是专坑开发者)。
    712e1959
        17
    712e1959  
       2020-01-15 22:16:15 +08:00 via Android
    insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html

    你确定长文件名导致的长路径名在 NTFS 上就有解了?
    loading
        18
    loading  
       2020-01-16 07:50:12 +08:00 via Android
    我感觉配合一个映射 txt,然后自己修改一些文件浏览器还原文件名,这个实现起来要简单很多,如果是 web 实现就更容易了。
    lvsemi1
        19
    lvsemi1  
    OP
       2020-01-16 10:14:13 +08:00 via Android
    … 上面几位在对空气输出?这本来就是 windows/osx 上的文件!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3360 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:17 · PVG 21:17 · LAX 06:17 · JFK 09:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.