我的笔记本电脑的内部 ext4 SSD 上有一堆视频文件(运行 Ubuntu 20.04,但在运行内核版本 5.4 或更高版本的任何 Linux 安装上可能会出现相同的错误,因为 exFAT 支持内置于 内核而不是添加到它上面),并且我正在尝试将它们移动或复制到 exFAT USB 闪存驱动器,以便我可以将它们传输到我的 Windows 7 桌面。
不幸的是,大多数文件拒绝移动或复制到 exFAT 驱动器:
为了屏幕阅读器用户的利益,错误消息是
复制时出错“[文件名]”。
将文件复制到时出错[目的地路径]。
无效的文件名
所有这些文件的共同点是它们的文件名包含以下一个或多个字符:
- ?(问号)
- !(感叹号)
- :(冒号)
- |(竖线)
文件名中存在这些字符可能是 Ubuntu 拒绝将这些文件移动或复制到闪存驱动器的原因(我曾尝试从笔记本电脑的 SSD 移动到 exFAT 闪存驱动器的每个文件,其文件名包含这四个字符中的任何一个)字符引发了此错误,并且我不记得曾经在其名称的文件中见过此错误不包含这四个字符中的任何一个),大概是因为它认为包含所述字符的文件名在 exFAT 下无效。
如果我尝试将文件名包含任何这些字符的文件直接下载到闪存驱动器,也会发生同样的错误;无论我使用什么闪存驱动器,它也会发生(我有一大堆来自至少三个不同制造商的 exFAT USB 闪存驱动器)。
然而带有这些字符的文件名显然不是在 exFAT 下无效,因为 Windows(在 Windows 7 下测试)可以毫不费力地将具有此类名称的文件复制/移动/下载到 exFAT 驱动器,而 macOS(在 Yosemite 下测试)愉快地复制/移动/下载名称包括 ?, !,或 : 到 exFAT 驱动器,同时转换 |在文件名中为·(中间的点)然后愉快地将所述文件复制/移动/下载到 exFAT 驱动器。那么这里出了什么问题,我该如何解决呢?
答案1
我不确定 Windows 和 Mac 是如何做到这一点的(你确定他们不会默默地重命名文件并删除这些字符吗?),但是 Microsoft 自己的exFAT规范说文件名中不允许使用问号、星号、冒号和竖线(以及一些其他字符),因此当 Linux 不允许您在 exFAT 格式的驱动器上创建这些文件时,这里是正确的。
答案2
来自维基百科,https://en.wikipedia.org/wiki/ExFAT:
文件名中允许的字符:所有 Unicode 字符除了U+0000 (NUL) 至 U+001F (US)/(斜杠)\(反斜杠):(冒号)*(星号)?(问号)”(引用)<(少于)>(大于)和|(管道)(UTF-16LE 编码)
答案3
重命名无效文件,以便可以将它们复制到 exFAT 文件系统,或者使用非 exFAT 文件系统作为目标。