win 上哪种文件系统是区分大小写的?

2022-01-12 16:47:52 +08:00
 James369

win 上对开发真是不够友好,这年头 NTFS 还是不区分大小写,解压一个包都报重名错误(大小写不一样)。 蛋疼,至少 mac 在新建文件系统时,也可以选择是否区分大小写。 怎么处理呢,各位大神。

5420 次点击
所在节点    程序员
42 条回复
wy315700
2022-01-12 16:52:49 +08:00
其实是 windows 本身不区分大小写,,和文件系统无关

NTFS 和 FAT32 其实都是区分大小写的。。

自 Windows 10 内部版本 17107 开始,支持按目录区分大小写。 在 Windows 10 内部版本 17692 中,支持已更新,以包括从 WSL 内检查和修改目录的区分大小写标志。 使用名为 system.wsl_case_sensitive 的扩展属性公开区分大小写。 对于不区分大小写的目录,此属性的值为 0 ;对于区分大小写的目录,此属性的值为 1 。


https://docs.microsoft.com/zh-cn/windows/wsl/case-sensitivity
lcdtyph
2022-01-12 16:53:31 +08:00
冷知识:NTFS 是大小写敏感的,用起来不敏感是因为 windows 包了一层

win10 上你可以对单独某个文件夹设置开启大小写敏感:
fsutil.exe file setCaseSensitiveInfo D:\workspace enable
qbqbqbqb
2022-01-12 16:57:07 +08:00
NTFS 内部是区分大小写的,但 Windows 默认不区分。

Windows 10/11 安装 WSL 以后可以用这个命令来对 NTFS 中的个别目录激活区分大小写属性:

fsutil file setCaseSensitiveInfo 路径 enable
James369
2022-01-12 17:07:53 +08:00
@wy315700 那就是说从目录着手曲线救国了,也行吧,不过还是不够方便。
每建一个文件夹都要再设置一下。万一忘记就麻烦了。
tsanie
2022-01-12 17:30:05 +08:00
@James369 顶层目录设置一下就行了,或者干脆直接设置一个分区。
thinkershare
2022-01-12 18:01:56 +08:00
我还觉得 Linux 不够友好了, 为啥要按照大小写在 UI 层区分文件
James369
2022-01-12 18:14:22 +08:00
@tsanie 我试了好像不能针对整个分区直接设置,只能对目录设置?
ysc3839
2022-01-12 19:04:57 +08:00
想全局开的话可以改注册表里的 ObCaseInsensitive ,不过印象中开了之后,还得在 CreateFile 传递 FILE_FLAG_POSIX_SEMANTICS 参数,基本上只有 Cygwin/MSYS2 会传这个参数,绝大多数应用还是不会生效的。而且我这里开了之后蓝牙用不了,印象中是蓝牙开关点了没反应。
至于楼上说的 fsutil setCaseSensitiveInfo 是否需要传递 FILE_FLAG_POSIX_SEMANTICS 我就不知道了。
qbqbqbqb
2022-01-12 19:25:32 +08:00
@James369 对目录设置了之后在里面创建子目录是自动继承设置的。
qbqbqbqb
2022-01-12 19:32:28 +08:00
@James369 不过这里还是有个问题,虽然直接创建目录是继承设置,但是第三方软件创建目录却不一定。如果你用的 Windows 里的压缩软件没有适配这个功能的话,解压出来的目录仍然是不区分大小写的,还是不能解压。为保险起见最好还是在 WSL 里解压这种压缩包。
nieyujiang
2022-01-12 19:44:37 +08:00
macOS 虽然可以设置,但是你架不住软件不适配.打开大小写敏感,很多软件崩的六亲不认.
ysc3839
2022-01-12 19:45:36 +08:00
@nieyujiang macOS 要区分大小写的话有个曲线救国的方案是创建虚拟磁盘,然后把虚拟磁盘格式化为区分大小写的文件系统。
Mutoo
2022-01-12 20:07:45 +08:00
大小写敏感并不是好事,冷知识:steam 的启动脚本里面用的文件名全是小写,但是目录下的文件名则各有不同。这就导致 steam 安装在大小写敏感的盘上无法启动。
cccer
2022-01-12 20:19:52 +08:00
@Mutoo Windows 环境变量里 C:\WINDOWS 全是大写的,改了 C 盘估计系统都启动不了。
agagega
2022-01-12 20:27:38 +08:00
NTFS 是区分大小写的,这个和 macOS 是反的,Mac 是文件系统默认不分大小写,操作系统分大小写。不过这两个要强行改估计都一堆坑。
hronro
2022-01-12 20:49:09 +08:00
@nieyujiang #11
我倒是把 macOS 的大小写敏感打开用了几年了,除了 Steam 还没遇到过不兼容的软件。不过 macOS 上的 Steam 本来也是个残废就是了。
tuwulin365
2022-01-12 22:40:04 +08:00
用大小写来区分文件才是真蛋疼
lxml
2022-01-12 23:13:38 +08:00
mac 我用了几年的区分大小写了,除了 abobe (用另一个忘了叫啥了替代) 和 steam (这个几步忽略,正经人谁用 steam 在 mac )
mineralsalt
2022-01-12 23:17:15 +08:00
@lxml 真的, 我也用区分大小写, 主要是为了编译安卓系统方便, 但是 PS 和 steam 装不了, 真的挺蛋疼的
datou
2022-01-12 23:20:12 +08:00
前几年折腾黑果的时候有一次把硬盘格成 APFS caps-sensitive

结果装好了各种第三方软件报错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/827856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX