WSL中vscode修改文件名报错Unable to move/copy

2023-11-24 09:23:09 浏览数 (2)

正常使用 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.

不能修改,那只能用命令来修改了,常见的方法有两种:

强制移动/复制

使用 mvcp 命令,并使用 -f 选项来强制执行。

代码语言:javascript复制
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 浏览器自动刷新插件(不定时更新)

0 人点赞