【问题标题】:how to find an 8.3 named file on a linux that contains the file如何在包含该文件的 linux 上查找 8.3 命名文件
【发布时间】:2017-01-02 06:25:02
【问题描述】:

我陷入了困境 - 我有非常旧的 dBase 表,其中包含 8.3 个文件名,这些文件显然与文件一起保存在旧的 msdos/windows 系统中。

我现在只有文件和 dBase(DBF 文件)——但连接 db 中的行和实际文件的链接是 8.3 格式。文件和 dBase 文件已从旧的 windows 机器复制到 linux 机器。

例如,数据库将有一行包含:

{"fileid" : 1, "dosname" : "APPLE~1.JPG"}, {"fileid" : 2, "dosname" : "APPLE~2.JPG"}

在我可能有的文件目录中的某个地方 “苹果树.JPG” 和 “苹果电脑.JPG”。

我怎么知道哪个是哪个?有什么我可以遵循的逻辑(比如字母数字排序来判断哪个是~1,哪个是~2?)

【问题讨论】:

    标签: linux windows filesystems filenames


    【解决方案1】:

    假设我们实际上是在谈论由某些 Windows 创建的 8.3 文件名......这并不难。

    Microsoft 有一个很好的规范,准确地解释了这些“较长”文件名如何映射到 8.3“符号”。

    here

    所以你可以坐下;你应该能够想出一个映射工具,将“长文件名”映射到它们的 DB 行 8.3 表亲。

    编辑:正如正确指出的那样,上面的链接只是一个描述,而不是所需映射的确切算法 - 但也许 this 算法可以为您解决问题!

    【讨论】:

    • 我读过这篇文章——“Windows 会在必要时将文件名截断为六个字符,并附加一个波浪号 (~) 和一个数字。例如,创建的每个唯一文件名都以“~”结尾1." 重复的文件名以 "~2"、"~3" 等结尾。----" - 从 long 转换为 8.3 时我缺少信息,因此无法向后转换。
    • @NiRR 好吧,您可以通过算法 (lxr.free-electrons.com/source/fs/fat/namei_vfat.c?v=4.6#L308) 运行磁盘上的文件,为给定的 LFN 创建 SFN,然后您将获得映射,
    • @itisravi 感谢您的意见;我相应地更新了我的答案。当您提供此类价值输入时;我选择了您的两个最有价值的答案,并为它们投票。
    • @NiRR 我希望这个答案现在已经足够好了;如果是这样,请考虑接受/赞成;每个人都很开心;-)
    猜你喜欢
    • 2011-11-04
    • 2014-03-05
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2013-06-02
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多