Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在包含8.3命名文件的linux上查找该文件_Linux_Windows_Filesystems_Filenames - Fatal编程技术网

如何在包含8.3命名文件的linux上查找该文件

如何在包含8.3命名文件的linux上查找该文件,linux,windows,filesystems,filenames,Linux,Windows,Filesystems,Filenames,我把自己弄到了一个角落——我有一些非常旧的数据库表,其中包含8.3文件名,这些文件名显然与文件一起保存在旧的msdos/windows系统中 我现在只有文件和dBase(DBF文件)——但是连接db中的行和实际文件之间的链接是8.3格式的。这些文件和数据库文件已从旧的windows计算机复制到linux计算机 例如,db将有一行包含: {“fileid”:1,“dosname”:“APPLE~1.JPG”}, {“fileid”:2,“dosname”:“APPLE~2.JPG”} 在文件目录的

我把自己弄到了一个角落——我有一些非常旧的数据库表,其中包含8.3文件名,这些文件名显然与文件一起保存在旧的msdos/windows系统中

我现在只有文件和dBase(DBF文件)——但是连接db中的行和实际文件之间的链接是8.3格式的。这些文件和数据库文件已从旧的windows计算机复制到linux计算机

例如,db将有一行包含:

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

在文件目录的某个地方我可能有 “appletree.JPG” 及 “苹果电脑.JPG”


我怎样才能分辨哪个是哪个?是否有某种逻辑我可以遵循(比如字母数字排序来区分哪一个是~1,哪一个是~2?

假设我们实际上讨论的是由某些窗口创建的8.3文件名。。。这并不难

微软有一个很好的规范,精确地解释了那些“较长”的文件名是如何映射到8.3“符号”的

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


编辑:正如正确指出的,上面的链接只是一个描述,但不是所需映射的精确算法-但可能算法为您提供了窍门

我读过这篇文章-“如果需要,Windows会将文件名截断为六个字符,并附加一个波浪号(~)和一个数字。例如,创建的每个唯一文件名以“~1”结尾。重复的文件名以“~2”、“3”等结尾。---”-从long转换到8.3时,我丢失了信息,因此无法进行向后转换。@NiRR好的,您可以通过算法()运行磁盘上的文件,为给定LFN创建SFN,然后得到映射,@itisravi感谢您的输入;我相应地更新了我的答案。当你提供这样的价值输入时;我选择了你的两个最有价值的答案,并对它们进行了投票。@NiRR我希望这个答案现在已经足够好了;如果是这样,考虑接受/投票;每个人都很快乐;-)