更改名称中包含空格的文件的名称

更改名称中包含空格的文件的名称

我不知道为什么,但是当我用命令更改此文件名时,mv会出现错误,指出not a directory.

-bash-4.1# mv {{ THEME SANITIZED }}.hacks.css myomega.hacks.css

答案1

mv "{{ THEME SANITIZED }}.hacks.css" myomega.hacks.css将工作。

答案2

您需要告诉 shell 您的意思是将大括号和空格作为文件名的一部分,而不是被解释为 shell 语法。

您可以在单引号内键入包含特殊字符的文件名。这适用于除单引号本身之外的每个字符。这是脚本中最简单的方法。

mv '{{ THEME SANITIZED }}.hacks.css' myomega.hacks.css

如果需要在单引号字符串内使用单引号,则可以使用四字符序列'\''

mv 'It'\'s' wierd' this_is_weird

或者,您可以在任何字符前放置反斜杠,这样会使该字符失去其特殊含义。在没有特殊含义的字符前放置反斜杠并没有什么坏处,但这当然是额外的不必要的输入。

mv \{\{\ THEME\ SANITIZED\ \}\}.hacks.css myomega.hacks.css

如果文件名来自变量,请在变量扩展周围使用双引号以保留特殊字符(使用如 中的裸变量mv $source $destination,变量值中的一些特殊字符将被扩展)。

source='{{ THEME SANITIZED }}.hacks.css'
destination=myomega.hacks.css
mv "$source" "$destination"

在命令行上,键入此类文件名的最简单方法是依赖完成。您需要至少输入第一个字符,然后按Tab

mv \{Tab
mv \{\{\ THEME\ SANITIZED\ \}\}.hacks.css 

答案3

您可以使用双引号来转义或用斜杠转义,例如:
使用双引号:

mv "{{ THEME SANITIZED }}.hacks.css" myomega.hacks.css

使用斜杠:

mv \{\{\ THEME\ SANITIZED\ \}\}.hacks.css myomega.hacks.css

一些很酷的东西,有些人不知道如何删除或重命名以破折号开头的目录,您可以破折号破折号:D
示例:

mkdir -directory_with_dash
rm -r -- -directory_with_dash

相关内容