Windows和Linux中区分大小写的文件扩展名


10

在Linux下,你可以有文件example.JPG,并example.jpg在同一目录下。

在Windows中,您具有区分大小写的扩展名,但是不能将这两个文件放在同一目录中。为什么不?


1
可能的重复在Windows不区分大小写的所有版本?(可能还有一个更好的问题)
科尔·约翰逊

FAT将扩展名与基本名称分开,操作系统添加了,.以用于输入和显示。(我相信可以肯定地说,如今除了互操作性以外,几乎没有人将FAT用于任何用途。)我不知道NTFS是如何做到的,但是我想它与每个主要的Linux文件系统类似,只是将文件名视为一串字符。文件扩展名没有什么特别的:它只是按照约定,并且被文件系统视为文件名的一部分。
CVn

查找ObCaseInsensitivesuperuser.com/q/266110/59271
user541686

@grawity不仅仅是tomayto,tomahto的一种情况?
wvdz 2015年

Answers:


32

在Windows中,您具有区分大小写的扩展名,但是不能将这两个文件放在同一目录中。为什么不?

如果驱动器格式化为NTFS,则可以同时使用example.JPGexample.jpg

但是,如果您尝试在Win32应用程序(例如记事本)中打开这些文件之一,则无论您在“打开文件”对话框中键入文件名的大小写如何,您都只能访问其中一个文件


NTFS卷上的文件名区分大小写

作为POSIX合规性要求的一部分,Windows NT文件系统(NTFS)提供了区分大小写的文件和目录命名约定。即使NTFS和POSIX子系统都能很好地区分大小写,但是基于16位的Windows,基于MS-DOS,基于OS / 2和基于Win32的应用程序却不能

在NTFS中,您可以创建存储在同一目录中的唯一文件名,只是大小写不同。例如,以下文件名可以共存于NTFS卷上的一个目录中:

CASE.TXT
case.txt
case.TXT

但是,如果您尝试在Win32应用程序(例如记事本)中打开这些文件之一,则无论您在“打开文件”对话框中键入文件名的大小写如何,您都只能访问其中一个文件

...

NTFS支持两种稍有不同的操作模式,可以通过与NTFS交互的应用程序子系统来选择。第一种是完全区分大小写的,要求应用程序提供的文件名与磁盘上存储的名称匹配,包括是否要选择磁盘上的文件的大小写。第二种操作模式是保留大小写,但不区分大小写。这意味着即使提供的名称与磁盘上存储的名称不同,应用程序也可以选择磁盘上的文件。请注意,两种模式都保留了用于创建文件的大小写。仅当应用程序需要定位现有文件时,此处说明的行为差异才适用。POSIX利用完全区分大小写的模式,而MS-DOS,WOW和Win32子系统使用不区分大小写的模式

文件名在NTFS卷上区分大小写


在实践中,我无法做到这一点

要使同一目录中的两个文件仅因情况而异,您需要启用Posix子系统。

POSIX利用完全区分大小写的模式,而MS-DOS,WOW和Win32子系统则使用不区分大小写的模式。

要启用Posix,请参阅:


这对我来说是新闻。我不得不暂时拒绝投票,因为即使您被引用了,实际上,我也无法做到这一点。您介意提供有关如何在实践中完成操作的说明吗?
MDMoore313 2015年

7
@BigHomie这是Windows shell,正在阻止您。NTFS可以在同一目录中保存a.JPG和a.jpg。如果启用Unix子系统(不建议使用),则文件名在Windows Explorer Shell中也将区分大小写。technet.microsoft.com/zh-CN/library/cc771470.aspx
Furkan Omay,2015年

1
@FurkanOmay我看到了,旧的unix子系统很好,谢谢。
MDMoore313

1
@FurkanOmay我知道你的意思了;)
MDMoore313

@BigHomie答案已更新,以说明如何启用posix
DavidPostill

6

NTFS区分大小写(取决于您如何看待玻璃,这可能是好事还是坏事)。实际上,在早期,实现区分大小写是一项挑战,因为您不必区分az和AZ的ASCII值。

即使Windows OS如今使用的NTFS(文件系统)可以支持POSIX,也无法使Windows(操作系统)区分大小写。

根据Microsoft的说法,您可能在NTFS的同一目录中有example.JPG和example.jpg(单击此处),但是OS(Windows的所有版本)不支持它,这使得文件系统可能毫无意义:)

作为POSIX合规性要求的一部分,Windows NT文件系统(NTFS)提供了区分大小写的文件和目录命名约定。即使NTFS和POSIX子系统都能很好地区分大小写,但是基于16位的Windows,基于MS-DOS,基于OS / 2和基于Win32的应用程序却不能。


1
不区分大小写并不难,尤其是在ASCII之类的编码中。DOS完成,CP / M完成。不区分大小写和保留大小写是更难破解的螺母。当然,这并不难,但是当您可能幸运地拥有16-32 KB的RAM并需要保持应用程序实际上在做有用的事情时,以一致的方式进行操作就更加困难。
CVn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.