无法复制、移动、重命名文件名中包含特殊字符(单引号)的文件

Mr.*_*jad 4 command-line special-characters

'我有一些文件名中含有特殊字符的文件。我似乎无法复制、移动、重命名这些文件。

例如,当我尝试重命名grandpa's_pen.mp4为时grandpas_pen.mp4,该操作花费了太多时间。

文件大小约为50MB,我的硬盘是NVMe。

知道为什么会发生这种情况吗?

Bea*_*nog 7

您需要转义 ',因为正如您也提到的,单引号 ( ') 是 Bash 中的特殊字符(这很可能是您的终端使用的 shell)。要转义字符,您可以在其前面使用转义字符。\因此,例如,要重命名grandpa's_pen.mp4grandpas_pen.mp4您应该运行:

mv grandpa\'s_pen.mp4 grandpas_pen.mp4
Run Code Online (Sandbox Code Playgroud)

或者,您可以"在带有单引号的文件两边使用双引号 ( )。上面的例子就是在这种情况下:

mv "grandpa's_pen.mp4" grandpas_pen.mp4
Run Code Online (Sandbox Code Playgroud)

笔记:

你说:

例如,当我尝试重命名grandpa's_pen.mp4为时grandpas_pen.mp4,该操作花费了太多时间。

在这种情况下,该操作不会花费太多时间。简单来说,命令还没有运行!

这是因为当单引号和双引号用作特殊字符时,即在不转义的情况下使用它们时,shell 期望它们成对出现。

在您的情况下,grandpa's_pen.mp4有一个未转义的单引号,因此当您按Enter运行命令时,shell 会给您一个新的提示,您可以在其中键入更多文本,并等待您输入结束单引号。仅当您输入结束单引号并按下时,Enter命令才会运行,这几乎肯定会返回错误。