前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Windows 10 四月更新,文件夹名称也能区分大小写了

Windows 10 四月更新,文件夹名称也能区分大小写了

作者头像
walterlv
发布于 2018-09-18 03:36:11
发布于 2018-09-18 03:36:11
3.2K00
代码可运行
举报
运行总次数:0
代码可运行

Windows 10 四月更新,文件夹名称也能区分大小写了

发布于 2018-06-14 00:02 更新于 2018-09-01 00:03

Linux 一向都是区分文件和文件夹大小写的。Mac OS 默认不区分文件和文件夹大小写,不过可以配置成支持。而 Windows 向来是不区分文件和文件夹大小写的,但是从 NTFS 开始却又支持区分文件夹大小写。

本文将介绍 Windows 10 四月更新带来的新特性 —— 让文件夹名称也能区分大小写。


问题

本来文件系统是否区分大小写只是单纯风格上的差异,并没有孰优孰劣,但这可让那些跨平台的文件系统难以抉择了。典型的例子就是 Git

我曾经就遭遇过 Git 操作上的大小写敏感性问题,写了一篇博客:解决 Git 重命名时遇到的大小写不敏感的问题

由于 Windows 文件系统对大小写不敏感,所以上面的问题才变得尤其难办,竟然需要通过至少两次提交,并且丢掉单线的 Git 历史记录的方式才能真正完成任务。而单纯让 Git 在仓库中区分大小写竟然会产生两份文件(却无法在 Windows 系统中观察到)。

开启方法

Windows 10 四月更新终于带来了文件夹区分大小写的支持!

使用管理员权限在当前文件夹启动 PowerShell:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fsutil.exe file SetCaseSensitiveInfo C:\Users\walterlv\GitDemo enable

是的,就是上面这一段非常简单而容易理解的命令即可开启单个文件夹的名称区分大小写功能。只是单个文件夹!如果需要开启其他文件夹,需要多次执行这样的命令。

而如果需要关闭对此文件夹的大小写支持,只需要将 enable 改为 disable

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fsutil.exe file SetCaseSensitiveInfo C:\Users\walterlv\GitDemo disable

看!以上就是在 Windows 10 系统级开启了大小写敏感的我的一个 Git 仓库,这下可以让跨平台的 Git 工作起来在各个系统都一样了。

注意事项

以上命令的正确运行需要以下条件,缺一不可:

  1. Windows 10 四月更新(1803)
  2. 安装有 Linux 子系统,即 Windows Subsystem for Linux
  3. 所在分区为 NTFS 格式
  4. 以管理员权限运行 PowerShell

如果没有安装 Linux 子系统,那么运行时会出现以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
错误:不支持该请求。

▲ 中文版 PowerShell

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
The request is not supported.

▲ 英文版 PowerShell

这个问题在 MicrosoftDocs 的 GitHub 仓库中被提到了:fsutil setCaseSensitiveInfo · Issue #977 · MicrosoftDocs/windowsserverdocs

安装 Linux 子系统的方法可以参考微软官方文档:Install Windows Subystem for Linux (WSL) on on Windows 10。如果英文阅读有压力,可以参考毒逆天的博客:Win10 安装 Linux子系统 Ubuntu18.04 / Kali Linux 的体验

简单点,就是管理员权限 PowerShell 敲个命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

或者命令都懒得敲,就是去商店下载(在商店搜索 Linux):


fsutil file 支持的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ⚡ lvyi@walterlv.github.io> fsutil.exe file
---- FILE Commands Supported ----

createNew                Creates a new file of a specified size
findBySID                Find a file by security identifier
layout                   Query all the information available about the file
optimizeMetadata         Optimize metadata for a file
queryAllocRanges         Query the allocated ranges for a file
queryCaseSensitiveInfo   Query the case sensitive information for a directory
queryExtents             Query the extents for a file
queryExtentsAndRefCounts Query the extents and their corresponding refcounts for a file
queryFileID              Queries the file ID of the specified file
queryFileNameById        Displays a random link name for the file ID
queryOptimizeMetadata    Query the optimize metadata state for a file
queryValidData           Queries the valid data length for a file
setCaseSensitiveInfo     Set the case sensitive information for a directory
setShortName             Set the short name for a file
setValidData             Set the valid data length for a file
setZeroData              Set the zero data for a file
setEOF                   Sets the end of file for an existing file
setStrictlySequential    Sets ReFS SMR file as strictly sequential

fsutil 支持的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ⚡ lvyi@walterlv.github.io> fsutil.exe
---- Commands Supported ----

8dot3name       8dot3name management
behavior        Control file system behavior
dax             Dax volume management
dirty           Manage volume dirty bit
file            File specific commands
fsInfo          File system information
hardlink        Hardlink management
objectID        Object ID management
quota           Quota management
repair          Self healing management
reparsePoint    Reparse point management
resource        Transactional Resource Manager management
sparse          Sparse file control
tiering         Storage tiering property management
transaction     Transaction management
usn             USN management
volume          Volume management
wim             Transparent wim hosting management

参考资料

本文会经常更新,请阅读原文: https://walterlv.com/post/case-sensitive-in-windows-file-system.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Windows也支持大小写敏感,Git用户的福音
最近在部署项目,遇到很多因为文件名大小写导致的编译报错问题。于是搜了下相关问题,发现 Windows 10 开始已经可以通过配置,来实现大小写敏感了。
德顺
2023/11/24
8210
解决 Git 重命名时遇到的大小写不敏感的问题
发布于 2017-11-23 08:51 更新于 2018-07-30 12:33
walterlv
2018/09/18
5.8K0
解决 Git 重命名时遇到的大小写不敏感的问题
Git大小写不敏感问题避免,Jenkins代码构建失败踩坑记录
前几天同事遇到一个问题,代码修改完本地可以运行,提交到 gitlab ,Jenkins 构建失败,报错找不到文件(图片)。
德顺
2022/01/27
1.4K0
.NET 三个字母究竟应该如何大小写?前面的 “.” 什么时候能够去掉?(.NET Standard / dotnet-core / net472)
发布于 2018-05-28 08:23 更新于 2018-07-30 11:47
walterlv
2018/09/18
8640
.NET 三个字母究竟应该如何大小写?前面的 “.” 什么时候能够去掉?(.NET Standard / dotnet-core / net472)
Git开启大小写识别
使用git mv来重命名文件夹(在core.ignorecase=true情况下)
用户1316967
2022/01/18
1.1K0
MySQL中的大小写敏感
今天同事问了一个问题,是关于MySQL大小写敏感的。 如果根据关键字case来搜索,会发现有两个参数。 mysql> show variables like '%case%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names |
jeanron100
2018/03/21
2.8K0
macos 文件系统 git仓库 大小写敏感设置; git config core.ignorecase
macos 的文件系统不区分文件名的大小写,这样会导致在一个文件夹,当修改一个文件名为大写的时候,git不能感知到。这样使用过程中会出现很多不必要的麻烦。之前设置过,最近使用,发现博客并没有记录,今天备注一下。
西湖醋鱼
2022/05/09
8580
Windows路径区分大小写,setCaseSensitiveInfo适用win11、2022等高版本系统,不适用≤win10/2019系统
总结:Windows路径区分大小写,适用win11、server2022等高版本系统,不适用≤server2019/win10系统
Windows技术交流
2022/08/24
1.9K0
Windows下的搜索神器 —— everything
介绍一款Windows下的神奇 —— everything,软件很小巧,但是搜索速度非常快,比Windows自带的搜索功能更强大、更快。掌握它的基本用法,在查找文件时能提升很高的效率
meteoric
2018/11/20
2.6K0
Windows下SVN自动改文件大小写名称
由于windows不区分文件大小写,因此SVN默认也遵循这个原则,若提交过某个文件后,在更改文件名称大小写,则会被svn自动更改回之前提交的大小写。可以通过设置SVN来改变此行为:
用户3293499
2024/12/27
1460
python——windows下实时监控文件夹的文件数量和大小
用户5228676
2023/11/14
4780
mysql大小写踩坑
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_lower_case_table_names
阿超
2022/08/21
1.8K0
文件系统特殊命令一览表
behavior参数 描述:查询下列行为的当前设置,生成 8.3 字符长的文件名、允许 NTFS 卷上 8.3 字符长的文件名中的扩展字符、更新 NTFS 卷上的最近访问时间戳、配额事件写入系统日志中的频率以及主文件表 (MFT) 区的大小。 启用或禁用 8.3 字符长文件名的使用、允许 NTFS 卷上 8.3 字符长文件名中的扩展字符以及更新 NTFS 卷上的最近访问时间戳。允许更改配额事件写入系统日志中的频率以及保留给MFT 区的磁盘空间量。
全栈工程师修炼指南
2020/10/26
1.1K0
文件系统特殊命令一览表
比较 Windows 上四种不同的文件(夹)链接方式(NTFS 的硬链接、目录联接、符号链接,和大家熟知的快捷方式)
可能有很多小伙伴已经知道通过 mklink 命令来创建 NTFS 磁盘上的各种链接;当然,就算不知道 mklink 的链接,快捷方式应该每个人都知道吧。mklink 的选项有很多种,但你可能在其他文章中难以找到对这些不同选项的不同效果和使用限制的准确和统一描述。本文将介绍 Windows 系统中所有的链接方式,它们的优缺点、使用条件和坑。
walterlv
2023/10/22
2.5K0
比较 Windows 上四种不同的文件(夹)链接方式(NTFS 的硬链接、目录联接、符号链接,和大家熟知的快捷方式)
Windows和Linux VPS/GDrive之间文件夹的实时单向/双向同步教程
说明:一般我们同步Windows和Linux之间的文件时,常用的方法有nfs挂载,inotify + rsync同步等,有钱的或许会买成熟的storenext系统,当然后者基本上都是公司在用,storenext由于价格太贵,个人使用基本可以无视,而nfs由于兼容性问题,在实际挂载中会出现很多小问题,算是inotify + rsync使用的比较多,不过鉴于前两天水过一篇Mutagen,博主发现用来实现Windows和Linux VPS之间双向同步的时候,速度还行,资源占用都不算很大,这里就大致水下使用方法,顺便也可以结合下Rclone,间接实现不挂梯子达到Windows和Gdrive双向同步的目的。
用户8851537
2021/07/31
2.2K0
Linux基础 02 文件夹与文件管理命令
今天学习一些常用的文件夹与文件管理命令!学会到处转转,看看有什么文件,建立、删除、重命名文件!
可乐同学与生信死磕到底
2024/04/16
1620
Windows 不区分大小写
之前就看过说 Windows 不区分大小写,但平时用得少倒也没什么体验,没想到还真能踩一次坑。
zqb_all
2020/05/04
2.9K0
WSL中vscode修改文件名报错Unable to move/copy
正常使用 Windows 开发,在部署编译的时候因为大小写问题报错,想安装一个 WSL Debian 系统,在里面编译一下试试,可以正常编译。
德顺
2023/11/24
4930
samba服务器配置
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
筱竼
2022/08/18
4.3K0
文件系统特殊命令一览表
描述:显示目录文件结构(list contents of directories in a tree-like format.); 如果是没有安装tree的根据您的发行版本命令进行下载即可;
全栈工程师修炼指南
2022/09/29
3.9K0
文件系统特殊命令一览表
推荐阅读
相关推荐
Windows也支持大小写敏感,Git用户的福音
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验