Answers:
您不应该rename只重命名一个文件,而应使用mv(1)。
此外,要避免出现白变现象,请在其前面加上一个\:
"Ubuntu One" → Ubuntu\ One
您的命令将是
mv bla\ bla.txt blabla.txt
反斜杠告诉bash,下一个字符在某种程度上很特殊,例如,\a对于“ bell”,\对于文字空间等等
参见man ascii(7)了解更多
另外,由于您现在使用的是正确的命令mv,如果有很多空格,则可以使用文件名加引号:
mv "bla bla.txt" blabla.txt
(这将是bla\ \ \ \ bla.txt转义的形式)
在bash中,带引号的字符串(单引号或双引号)被视为单个参数,而未带引号的字符串将被拆分为多个参数,如下所示:
["mv", "bla", "bla.txt", "blabla.txt", ]并mv期望:
["mv", "source", "destination", ]注意:键入“ mv”和文件名的前几个字符,然后按TAB将为您提供文件名的转义版本,从而使重命名变得快速,容易。
rename用于使用正则表达式批量处理文件重命名,如其手册页中的示例所示:
rename 's/\.bak$//' *.bak
从所有匹配“ * .bak”的文件中删除任何出现的.bak(在字符串[$]的末尾)。
rename "s/\s//g" "bla bla.txt"
s是sed替代命令。
\ s用于空白
您将一无所获。其他替换字符串在第二个正斜杠之后。
g用于全局,即替换每个实例。省略g仅替换第一个实例。
此命令将在所有文件中用下划线替换空格:
rename "s/\s/_/g" *