如何替换文件名中的空格?

NES*_*NES 8 command-line

我尝试了以下方法:

rename 'bla bla .txt' blabla.txt
Run Code Online (Sandbox Code Playgroud)

但这不起作用,这种情况下的正确语法是什么?

Ste*_*zzo 15

您不应该只使用rename重命名一个文件,而是使用mv(1)

此外,要逃避 whitepsace,请为其添加前缀\

"Ubuntu One" ? Ubuntu\ One

你的命令是

mv bla\ bla.txt blabla.txt
Run Code Online (Sandbox Code Playgroud)
  • 反斜杠告诉 bash 下一个字符在某种程度上是特殊的,例如\a对于 'bell',\对于文字空间等等

    参见man ascii(7)了解更多

或者,由于您现在使用的是正确的 command mv,如果有很多空格,您可以引用文件名:

mv "bla    bla.txt" blabla.txt
Run Code Online (Sandbox Code Playgroud)

(这将是bla\ \ \ \ bla.txt转义形式)

  • 在 bash 中,带引号的字符串(单引号或双引号)被视为单个参数,而不带引号的字符串将被拆分为多个参数,如下所示:

    • ["mv", "bla", "bla.txt", "blabla.txt", ]

    mv期望:

    • ["mv", "source", "destination", ]
  • 注意:输入“mv”和文件名的前几个字符并按下,TAB将为您提供文件名的转义版本,使重命名变得快速而简单。


rename用于使用正则表达式批量处理文件的重命名,如其手册页中的示例所示:

rename 's/\.bak$//' *.bak
Run Code Online (Sandbox Code Playgroud)

从匹配“*.bak”的所有文件中去除任何出现的 .bak(在字符串 [$] 的末尾)。