从文件名中删除 space

Remove space from a filename

我无法找到问题的答案,所以我制作了 windows-cmd 之类的程序,我的功能之一是重命名文件。如果旧名称/新名称中没有白色space,一切都很好,但只要有space,它就不起作用。我一直在研究如何从旧名称和新名称(如果有的话)中删除白色 space,然后继续重命名并将白色 space 放回去,但我不知道如何继续……我一直在阅读一些关于 "trim" 的内容,但没有帮助。这是我的代码的一部分:

elsif ($fr eq 'ren') {
        $getmenu =~ s/ren //g;
        my ($rf,$kb) = split /[ ]/,$getmenu;
        rename($rf, $kb) || die "Error\n";
        print "\n>$rf has been renamed as $kb\n";
    }

您使用空格来指示文件名的开始和结束位置,因此名称中不可能有任何空格。这就是 shell 使用引号和转义机制的原因。您需要将这些引入您的命令语言。

既然白色space字有问题,我会:

  1. 将它们替换为占位符符号(如连字符、竖线或@)
  2. 重命名文件
  3. 再次用 spaces 替换占位符

这个问题展示了如何做到这一点: Replace whitespace with hyphen in Perl