在 OS X 上复制文件名中包含 ? 的文件​​时参数无效

在 OS X 上复制文件名中包含 ? 的文件​​时参数无效

我正在尝试将文件从 AFP 共享复制到 SMB 共享。

AFP 共享上的几个文件的?名称中都有 。如果我尝试复制它们,我会得到无效参数”。

?我一开始不知道这些文件的名称是怎么来的。

以下是一个例子:

user$ cp tes?t /mnt/share/
cp: tes?t: invalid argument

我尝试重命名该文件,但收到“资源繁忙”错误消息。

我该怎么做才能复制这些文件?

答案1

使用反斜杠转义问题掩码:

$ cp tes\?t /mnt/share/

答案2

删除是?一个选项吗?对于 NTFS 兼容文件系统下的文件或路径名来说,这是一个无效字符,因为它实际上是一个单字符通配符。

resource busy错误可能是由于?被解释为通配符,并且文件系统试图访问它认为可能代表的所有可能的无效文件名而导致的。

我相当肯定你必须从不考虑?无效字符(在 Mac 上它是有效字符吗?)的文件系统访问文件,才能?用有效字符替换。

答案3

这些?符号代表无法识别的字符。

最有可能的问题是 AFP 使用 UTF-8 文件名,但您没有使用 UTF-8 语言环境登录到安装 AFP 共享的系统。如果是 Linux 系统,您可以使用命令检查您的语言环境locale

如果发现它没有使用 UTF-8 语言环境,您可以暂时更改语言环境,例如:

export LC_ALL="en_US.UTF-8"

相关内容