正常使用 Windows 开发,在部署编译的时候因为大小写问题报错,想安装一个 WSL Debian 系统,在里面编译一下试试,可以正常编译。
这里有一个误区,我一直以为 Windows 和 MacOS 不区分大小写,Linux 是区分大小写的。
其实不是的,文件大小写敏感是与文件系统有关的, Windows 默认的文件系统(NTFS)不区分文件名的大小写,而在 Linux 比较常见的 Ext4 文件系统中,文件名是区分大小写的。
于是就从服务器部署的日志查看是哪些文件名有问题,逐一排查。
在修改一个文件夹的大小写时,报了下面的错误:
代码语言:javascript复制Unable to move/copy 'vscode-remote://wsl debian/mnt/d/lib/packages/src/Line-chart' because target 'vscode-remote://wsl debian/mnt/d/lib/packages/src/line-chart' already exists at destination.
不能修改,那只能用命令来修改了,常见的方法有两种:
强制移动/复制
使用 mv
或 cp
命令,并使用 -f
选项来强制执行。
mv -f Line-chart line-chart
或
代码语言:javascript复制cp -rf Line-chart line-chart
修改文件名
使用 mv
命令来修改文件名:
修改单个文件名:
代码语言:javascript复制mv old-file-name new-file-name
old-file-name
是原始文件名,new-file-name
是新文件名。
例如,将 Line-chart 修改为 line-chart:
代码语言:javascript复制mv circular-bar-Line-chart circular-bar-line-chart
批量修改多个文件名:
代码语言:javascript复制for file in *; do
mv "$file" "$(echo $file | tr 'A-Z' 'a-z')"
done
上述命令 tr 'A-Z' 'a-z'
是将所有大写字母转换为小写字母的命令。这是一个示例,你可以根据需要修改转换规则。
注意:要小心使用这些命令,因为它会覆盖目标位置的同名文件,可能会导致数据丢失。
结果还报错:
代码语言:javascript复制mv: cannot move 'Line-chart' to a subdirectory of itself, 'line-chart/Line-chart'
归根结底还是大小写敏感问题,可以先改成一个临时名称,再改回来:
修改成临时名称:
代码语言:javascript复制mv Line-chart line-chart-temp
将临时文件名重命名为目标文件名:
代码语言:javascript复制mv line-chart-temp line-chart
未经允许不得转载:Web前端开发资源网 » WSL中vscode修改文件名报错Unable to move/copy
推荐阅读:
jQuery实现元素的鼠标移入移出及点击显示隐藏(微信二维码)
CSS3中元素背景的 gradient 渐变属性
判断网页是通过PC端还是移动终端打开的
分享一些实用的Chrome DevTools技巧
JetBrains IDE Support 浏览器自动刷新插件(不定时更新)