我如何进入并重命名“人类(2012)”之类的文件夹?

我如何进入并重命名“人类(2012)”之类的文件夹?

我正在通过命令行使用 FTP,遇到了两个问题。我无法重命名或进入文件夹,例如:

dir /home/folder1/Human (2012)

我试过:

cd ~/folder1/Human\ (2012)

在这里我收到一条消息the folder does not exist

mv ~/folder1/Human\ (2012)

在这种情况下,我收到一条消息,内容是:

syntaxfailure at (

我怎么解决这个问题?

答案1

你可以用双引号引用你的路径:

cd ~/"folder1/Human (2012)"

或者您应该提供()(空格) 的转义序列(因为这些是特殊字符):

cd ~/folder1/Human\ \(2012\)

mv ~/"folder1/Human (2012)"

使用转义序列:

mv ~/folder1/Human\ \(2012\)

答案2

您对空格前的 的想法是正确的\。这适用于所有特殊字符(包括括号)。在左括号前加上一个反斜杠,在右括号前加上另一个反斜杠,这样就可以了。

在这些情况下,Tab 补全很有用...如果您开始输入文件名,然后按下Tab,它将自动完成文件名的其余部分,并在必要时插入反斜杠。(如果您输入的文件名不够多,无法明确表示您要输入哪个文件,bash 仍会尽可能自动完成文件名。按两次 tab 将显示文件名的可能补全列表。)

答案3

我同意 snoop 的观点,即"在指定文件或目录时使用标记。

但是,如果有大量目录需要重命名,您可以使用将它们重命名为更友好的名称。重命名的工作原理rename与重命名文件和目录类似,但通常用于编辑文件的内容。以下是一个例子:sedrenamesed

rename 's/ //g;s/\(//g;s/\)//g' ~/folder1/*

因此,如果您在 中有以下目录~/folder1

Human (2012)
Human (2011)
Human (2010)

它们将被重命名为:

Human2012
Human2011
Human2010

运行以下命令以获取更多信息:

man rename

相关内容