我试图重新命名一个文件名为12F-XYZ.pdf来13F-XYX_ABX.pdf。
原始名称和必需名称都带有连字符。我知道对于我们\用来解决问题的空格,但是对于连字符或任何其他可能被 shell 或命令特殊处理的字符,我们该怎么办?
正如 David Foerster 在评论中指出的那样,连字符 (-) 不会被 shell 特殊处理。因此,就您的示例而言,您可以简单地执行以下操作:
mv 12F-XYZ.pdf 13F-XYX_ABX.pdf
Run Code Online (Sandbox Code Playgroud)
但是,如果您有空格或文字转义字符(反斜杠)或任何其他需要转义的字符,您可以使用转义字符 ie\或将整个名称放在引号内,' '以便按字面意思处理引号内的内容。
下面是一个例子:
mv 12F-XYZ.pdf 50M -XYZ.pdf ##Wrong
mv 12F-XYZ.pdf 50M\ -XYZ.pdf ##Right
mv 12F-XYZ.pdf '50M -XYZ.pdf' ##Right
Run Code Online (Sandbox Code Playgroud)
一个经验法则是在有疑问时逃避它。 这篇关于特殊字符的文章对您来说将是一个很好的阅读。
正如穆鲁在评论中指出的那样,在前导连字符的情况下您可能会遇到问题,因为许多命令将以连字符开头的参数视为选项。在这种情况下,您可以使用以下任一方法:
mv -- foo.bar -foo.bar
mv foo.bar ./-foo.bar
Run Code Online (Sandbox Code Playgroud)
的--表示为前一个命令开关的端部(在这种情况下mv)。并非所有命令都支持,--因此使用第二个选项 ( ./-foo.bar) 会更可靠。