长文件名在 Linux 上有没有解? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lvsemi1
V2EX    程序员

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

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

    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     Solana     2504 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 01:48 PVG 09:48 LAX 18:48 JFK 21:48
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86