当 Windows 在 NTFS 分区中遇到两个名称相同但大小写不同的文件时,默认的预期行为是什么?

tru*_*ktr 16 windows filesystems

从 Linux 将两个文件写入 NTFS 分区很容易,并且这两个文件都包含相同的字母但大小写不同,例如 some_file.txt 和 Some_File.txt。Linux 区分了它们。

Windows 如何处理这些?

Max*_*mon 20

MS-DOS、WOW 和 Win32 特性将返回第一个匹配文件。对于某些应用程序和API,区分不敏感强制执行(例如,MS-DOS就不能处理它)。默认情况下,POSIX 个性有所区分并且区分大小写(例如,如果您安装了 UNIX 工具)。本机 Windows NT 命令提示符将显示两者,但根据设置 (ObCaseInsensitive) 和工具使用的 API,仅访问它找到的第一个。

请参阅 Microsoft Technet 文章Filenames are Case Sensitive on NTFS Volumes (KB100625)以及对各种 NT 子系统中区分大小写的微妙之处的详细讨论:了解 Windows 中的区分大小写:obcaseinsensitive、FILE_CASE_SENSITIVE_SEARCH

特别是ObCaseInsensitive值控制整个 NT 对象管理器的大小写敏感度:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive
Run Code Online (Sandbox Code Playgroud)
  • 设置为 0 时,对象管理器以区分大小写的模式运行。
  • 设置为 1 时,对象管理器以不区分大小写的模式运行。
  • 如果未指定,NT 5.1 (Windows XP) 和更高版本默认以不区分大小写的模式运行。
  • obcaseinsensitive 在 NT 5.0 (Windows 2000) 和以前的 NT 版本中没有意义,它们总是在区分大小写的模式下运行。

Cygwin应该在此时选择底层/有效的区分大小写设置。

相关的超级用户问题如何在 Windows 7 中配置文件夹名称区分大小写?如果您需要定期处理这种情况,TechNet 文章配置文件和文件夹名称的区分大小写提供了有关在 NT 中为文件和文件夹启用完全区分大小写的更多信息。

有关区分大小写的工具/访问 NTFS/NFS 卷的其他资源:

  • 哪个是第一个完全取决于它们在目录中出现的顺序。这不一定是它们的创建顺序。如果文件被修改或目录被更新,它可能会改变。(Chkdsk,碎片整理,删除,复制移动该文件夹中的其他文件都可以更改顺序。) (2认同)